
答えとしてシェルスクリプトのコメントに関するこの質問、これは:
明示的に何もしない空のコマンドであることを示します(ただしコメントでは使用されません)。
何もしない命令がどんな役に立ちますか?
答え1
私は通常、true
ループで使用する方が明確だと思います。
while true; do
...
done
この機能が本当に役に立つと思うところの1つ:
は一致する必要がある項目がありますが、実際には何もしたくない場合のケースの説明です。たとえば、
case $answer in
([Yy]*) : ok ;;
(*) echo "stop."; exit 1 ;;
esac
答え2
最初は、Cコンパイルプログラムではなく、Bourneシェルプログラムであることを確認するために使用されました。これはshebangとさまざまなスクリプト言語(csh、perl)の前でした。次のスクリプトを引き続き実行できます:
。
$ echo : > /tmp/xyzzy
$ chmod +x /tmp/xyzzy
$ ./xyzzy
$SHELL
通常、(or)に対してスクリプトを実行します/bin/sh
。
それ以来、主な用途はパラメータを評価することでした。私はまだ以下を使用しています:
: ${EDITOR:=vim}
スクリプトでデフォルト値を設定します。
答え3
:
内部で終了する必要があるループを作成するのに役立ちます。
while :
do
...stuff...
done
これはbreak
、またはが呼び出されない場合、またはexit
シェルが終了シグナルを受け取らない限り、永久に実行されます。
答え4
#文字に加えて、私は行を一時的にコメントアウトするためにこの文字を使用したことがあります。この場合、行をコメントアウトすると、空のコマンドシーケンスを許可しないシェル構文の欠陥が原因で構文エラーが発生します。
if condition ; then
:# temporarily commented out command
fi
それ以外の場合は、コマンドシーケンスが欠落している可能性があり、これは構文エラーです。