一部のスクリプトでは、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
読みやすくするには - 構文を使用することをお勧めします。then
else
答え2
if句はその間にあるすべてを実行し、then
次のfi
式がif
trueの場合、これはシェル用語で終了値が0であることを意味します。コマンドまたは括弧(コマンドの略称)を使用できますtest
。このa && b
構造は、「aを評価し、真であればbも評価します」を意味します。したがって、両方の例は同じですが、if句はより読みやすく、複数のコマンドをグループ化するために使用できます。