回答:
[
ある別の名前のためにtest
。これらの3行はすべてtest
、いくつかのオプションを指定して実行されるコマンド行です。
最初の行では、これは標準テストです。[ 5 -gt 4 ]
と同じtest 5 -gt 4
です。
2番目では、式が省略されています。これは、false(0 arguments: Exit false (1)
)を終了することを意味します。
3番目のケースでは、GNU coreutilsを使用していると思います。GNU test
では、ヘルプテキストに次の注記が含まれています。
NOTE: [ honors the --help and --version options, but test does not. test treats each of those as it treats any other nonempty STRING.
これはPOSIX以外の拡張です。動機は、test
それらの引数を他の引数と同様に文字列として扱うために必要とされるようです。右括弧の[
存在により、オプションのケースと文字列のケースを区別できます]
。
シェルは独自のを提供する可能性が高いため、このバージョンを使用[
する必要があること/bin/\[
に注意してください。
[
test
一部のシェルに組み込まれているシェルと同じです。
さらに下を見ればman test
、それはEXPRESSION
あなたがテストできる有効なものを説明しています:
省略されたEXPRESSIONのデフォルトはfalseです。それ以外の場合、EXPRESSIONはtrueまたはfalseで、終了ステータスを設定します。次のいずれかです...
これは、マンページから、あなたには明らかではないかもしれないが、古い/いくつかの他のシェルでは、両方[
とは、test
あなたが見空間を意味し、実際のコマンドとして用意されてい[ EXPRESSION ]
ている必須のためEXPRESSION
として受け入れられるために、引数のために[
/ test
。したがって、組み込みとして提供するシェルであっても、互換性のためにこの形式を保持します。
[ OPTION
ブラケットが本当に欠けていません。
実際、おそらく驚くべきことに、[
と/usr/bin/[
同等のコマンド(にあります)ですtest
。したがって、(少なくとも理論的には)左角かっこだけを使用することが許可され、右角かっこは構文糖衣としての役割も果たします。ただし、新しいシェルバージョンでは必要です。
test
、オプションで使用できない(その可能性についてはリストされていない)違いがありますか?
[
。
]
が、POSIX [
は、名前の呼び出しやマシンの再起動、ヘルプメッセージの出力など、必要な処理を実行できます。あなたがそれなしでそれを呼び出す場合。それはGNUことができますgrep
の[ --version
。test --version
そして[ --version ]
しかし真(のためのテスト戻すために必要とされる--version
非空の文字列である)と、出力何も。