アンパサンド演算子を使用してシェルでコマンドを実行するとcommand1&&command2
、最初のコマンドが正常に実行され、終了ステータスがゼロになることは理解しています。
これは、0 が偽で 1 が真であるブール論理と似ているのでしょうか、それとも違うのでしょうか、それとも私が誤って理解しているのでしょうか?
使用するシェルの種類によって違いはありますか? 現在、Bourne-Again Shell を実行しています。
答え1
シェルでは、ほとんどの場合、エラーがゼロで成功を示すのに 0 が使用されます。したがって、この意味では、0 が通常 false である多くのプログラミング言語とは異なり、論理的には true です。ただし、最近の言語では、true と false の論理値が明確に区別される傾向があります。
答え2
より適切な根拠は、実際には「成功」は 1 つしかないが、「失敗」には複数の理由 (ファイルが見つからない、引数エラー、計算エラーなど) があるということです。これは、プロセス間通信における OS の慣例であり、シェルだけではありません。戻りコードはシステムexit(2)
コールによって送信され、呼び出しによって受信されますwait(2)
。