"/bin/["は正確にどのように機能しますか?

フォルダにプログラムが/binあるという事実に常に驚きます。[

if [ something ]これを行うときは、次のように呼びます。

[シェルでプログラムを明示的に呼び出すと、適切なプログラムを要求して閉じ]括弧を指定すると、括弧の間に何を挿入しても何もしません。

言うまでもなく、プログラムの助けを借りる一般的な方法は機能しません。つまり、仕事でもman [仕事でもありません[ --help

ベストアンサー1

この[コマンドの目的は、テスト式を評価することです。 0終了状態で返されます(つまり、本物)式がtrueと他の値として解釈されるとき(これは間違った)そうでなければ。

何もしないわけではありませんが、終了状態で結果を見つけることができます。シェルでは、$?Bourne シェルや他のほとんどのシェル (fish/rc/es/csh/tcsh...) と同様に、最後のコマンド$statusの終了ステータスを見つけることができます。

$ [ a = a ]
$ echo "$?"
0
$ [ a = b ]
$ echo "$?"
1

たとえば、他の言語では、perl終了ステータスは次の戻り値として返されますsystem()

$ perl -le 'print system("[", "a", "=", "a", "]")'
0

すべての最新のBourne様シェル(およびfish)には組み込み[コマンドがあります。通常、ここに含まれるコマンドは、他のシェルを使用する場合、または上記のコマンドと同じ操作を実行した場合にのみ実行されます/binenv [ foo = bar ]find . -exec [ -f {} ] \; -printperl

順序[は名前としても知られていますtest。 asが呼び出されたら、引数をtest終了する必要はありません。]

あなたのシステムにマニュアルページがないかもしれませんが、[おそらくそうです。しかし、もう一度申し上げますが、文書化または実装されますtest。シェルに組み込まれている機能については、シェルのドキュメントをお読みください。/bin/[/bin/test[

このユーティリティの履歴と[[...]]kshテスト式との違いの詳細については、以下を参照してください。その他の質問と回答についてはこちらをご覧ください

おすすめ記事