「if」が不要な場合はいつですか?

「if」が不要な場合はいつですか?

一部のスクリプトでは、if次のように作成された条件文を表示できます。

if [ some_conditional_statement ]; then
    # do stuff
fi

または

[ some_conditional_statement ] && #do stuff

2番目の例は同じですが(do stuff部分は条件がtrueの場合にのみ実行されます)、次のように1つのコマンドのみを実行する必要がある場合にのみ役立ちます。

[ -f "/path/to/some/file" ] && . /path/to/some/file

それとも私が見逃した他の違いはありますか?

答え1

さて、私は(またはbashで)本質的に副作用のないコマンドですが、条件を評価して適切な終了状態を提供することを理解したと思います。あなたはsを一緒に接続すると言いました。あなたはこれを行うことができます。[ condition ][[ condition ]]&&

A  &&  B  &&  C

等しい

if A
then
    if B
    then
        C
    fi
fi

ところで、あなたはどうなるかと聞くようですね。

if A
then
    B
    C
fi

あなたはこれを行うことができます

A  &&  (B; C)

または

A  &&  { B; C;}

メモ:

  • 角かっこはサブシェルを提供します。つまり、コマンドは子プロセスで実行されBます。Cしたがって、変数の割り当てなどのコマンドはcd親シェルには影響しません。中括弧で囲まれたコマンドは、コマンドと同じプロセスで実行されますA
  • 中かっこ構文には次のものがあります。〜しなければならないその後にスペースがあり、{次のようになります。〜しなければならない先行  ;(または改行)文字です。&}

私の考え:

if読みやすくするには - 構文を使用することをお勧めします。thenelse

答え2

if句はその間にあるすべてを実行し、then次のfi式がiftrueの場合、これはシェル用語で終了値が0であることを意味します。コマンドまたは括弧(コマンドの略称)を使用できますtest。このa && b構造は、「aを評価し、真であればbも評価します」を意味します。したがって、両方の例は同じですが、if句はより読みやすく、複数のコマンドをグループ化するために使用できます。

関連情報