&
POSIX 2013以降の制御演算子関連;
:
非同期リストの場合
バックグラウンドでコマンドを実行する形式は次のとおりです。
command1 & [command2 & ... ]
順次リストの場合、
順次実行コマンドの形式は次のとおりです。
command1 [; command2] ...
&
1元ですか、2元ですか?;
1元ですか、2元ですか?&
;
これはバイナリのように見え、前と後のコマンドに対して機能し、2つのコマンド間の実行順序が同時か順次かを示します。&
非同期リストの各コマンドの後に&
。;
順次リストの最後のコマンドには以下が必要ないため、単項のようには見えません;
。注:演算子はオペランドに対して機能します。オペランドの数によって演算子は単項、二進…と言えます。私が正しく理解した場合、制御演算子はコマンドの演算子です。
&
と混合リストのコンポーネントコマンド;
間の実行順序は何ですか?コンポーネントコマンドのそれぞれと&
の意味は何ですか?;
たとえば、バッシュでは
$ echo 1 ; echo 2 & echo 3; echo 4 & echo 5 1 [1] 11089 3 2 [2] 11090 5 4 [1]- Done echo 2 [2]+ Done echo 4 $ echo 1 ; echo 2 & echo 3; echo 4 & echo 5 ; echo 6 & 1 [1] 11100 3 [2] 11101 5 [3] 11102 6 4 2 [1] Done echo 2 [2]- Done echo 4 [3]+ Done echo 6
ベストアンサー1
私は一般的にそれらを「オペレーター」とは思わない。私の言葉は、通常、演算子は値を返すということです。
&
どちらもありません;
。代わりに、彼らは声明を終了します。しかし、それらを演算子として考えると、単一のステートメントに対して機能するため、後続の単項演算子になりそうです。彼らは左から右から始まります。の場合、
&
バックグラウンドで非同期的に実行されます。echo 1 & echo 2 & echo 3
1、2、3は順序に関係なく印刷できます。ここに行く順番に、カーネルは順番に印刷するように予約しないことがあります。ただし、echo 1; echo 2; echo 3
常に数字順に印刷されます。echo 1; echo 2 & echo 3
1は常に最初に印刷されますが、2と3は順序に関係なく印刷できます。