test
ダッシュ組み込み(または)コマンドの末尾のコロンの意味は何ですか[
?if [ ... ]: ; then .. ; fi
では(完全に)動作しますが、では動作しないことを知ってdash
驚きました。bash
これは、組み込み関数がコマンドとは異なる動作をするためです。
$ /usr/bin/\[ 1 ] && echo 1
1
$ /usr/bin/\[ 1 ]: && echo 1
/usr/bin/[: missing `]'
$ [ 1 ]: && echo 1
1
答え1
コマンドを解析すると、これは大きな問題のようです。 bash
閉じ括弧が最後の引数になると予想し、正確に「]」文字列ではない場合は文句を言います。
bash$ [ 1 ]
bash$ [ 1 ] hi
bash: [: missing `]'
bash$ [ 1 ]hi
bash: [: missing `]'
bash$ dash
$ [ 1 ]
$ [ 1 ] hi
dash: 2: [: missing ]
$ [ 1 hi]
dash: 3: [: missing ]
$ [ 1 ]:
$ [ 1 ]hi
$
シェルはdash
最初の文字が「]」であることを確認し、残りは無視します。 "]"が最後の引数の最初の文字にない場合は、次bash
のようなエラーが返されます。