チュートリアルとハウツーでは、よくコマンドが組み合わされています。例えば、
Sudo apt-get update && Sudo apt-get install pyrenamer
&
、&&
、||
、;
の4つのコネクタが考えられます。 &
コネクタは明確ですが(プロセスをバックグラウンドに送信し、ターミナルを使用可能のままにします)、&&
と;
の違いは明確ではありません。そして、カヤのコメントまで||
を知りませんでした。
次の質問では、2つのコネクタの違いを扱いますが、ほとんどはコメントで行います。
したがって、関連する質問がいくつかあります。
;
と&&
の違いは何ですか?cd /somewhere_else; rm -Rf *
のようなコマンドが破壊的な結果をもたらす可能性があることを述べています。カンニングペーパー:
A; B # Run A and then B, regardless of success of A
A && B # Run B if and only if A succeeded
A || B # Run B if and only if A failed
A & # Run A in background.
&&
は、最初のコマンドがステータス0(成功)で終了した場合にのみ2番目のコマンドを実行します。 ;
は、最初のコマンドがゼロ以外のステータスで終了した場合でも、両方のコマンドを実行します。
&&
を使用した例は、次のように言い換えることができます。
if Sudo apt-get update ; then
Sudo apt-get install pyrenamer
fi
;
を使用すると、最初のコマンドが成功したかどうかに関係なく、コマンドが実行されます。
&&
を使用すると、最初のコマンドが正常に実行された場合にのみ2番目のコマンドを実行します(ステータス0)。
両方とも異なる視点で使用されます。長いプロセスの場合と同様に、インストールの場合は、コンパイルしてインストールする必要があると言います。 make && make install
する必要があります。したがって、インストールはmake
が成功した場合にのみ実行されます。
したがって、依存コマンドの場合は、&&
を使用する必要があります
Wash bash、または独立したコマンドを持つコマンドは;
を使用します
したがって、最初のジョブが失敗してもコンピューターをシャットダウンする場合は;
を使用しますが、最初のジョブが完全に成功した場合はシャットダウンを開始します&&
a ; b
は、aの終了ステータスに関係なくbを実行します。 a && b
は、成功した場合にのみbを実行します。
これは、最初の3つの質問に答えるのに必要かつ十分です。特に、2は広すぎて、「1つの」決定的な答えを与えることはできません-あなたの最善の策は、ケースバイケースで決定することです。
4番目の質問について: They're Bash syntax 。
どちらを使用しても本質的な危険はありません。繰り返しますが、上記の定義で十分です。 b
が成功しなかった場合、a
に意図しない効果がある場合、&&
を記述することを意味します。これ以上のルールや説明は必要ありません、私見。