出力の直観を理解したいです。

出力の直観を理解したいです。
bash-3.2$ echo foo > foo.txt
bash-3.2$ if cmp foo.txt foo.txt; then echo EQUAL; fi
EQUAL
bash-3.2$ echo bar > bar.txt
bash-3.2$ if cmp foo.txt bar.txt; then echo EQUAL; fi
foo.txt bar.txt differ: char 1, line 1

ただし、cmp は等しい場合は 0 を返し、異なる場合は 1 を返します。これはbashのifステートメントが0または他の値を返すという意味ですか?

ベストアンサー1

はい。 Bash(および他のシェル)では、状態0で終了するコマンドは「成功」と見なされ、他の終了状態は「失敗」と見なされます。

bashifコマンドは、「条件付き」式では厳密には機能しません。構文は次のとおりです。

$ help if
if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
    Execute commands based on conditional.

    The `if COMMANDS' list is executed.  If its exit status is zero, then the
    `then COMMANDS' list is executed.  Otherwise ...

与えられたコマンドの終了状態に従って分岐します。

ステートメントで最もよく見られる一般的なコマンドは、組み込みコマンドと生成されたコマンドifです。これらのコマンドは同じ方法で動作します。ステータス0(「成功/真」を意味)または非ゼロ状態(「失敗/偽」を意味)で終了し、他のコマンドと同様に内部または外部で使用できます。 //声明。[[[...]]cmpifwhileuntil

おすすめ記事