& ; は単項演算子ですか、それとも二項演算子ですか?

& ; は単項演算子ですか、それとも二項演算子ですか?

&POSIX 2013以降の制御演算子関連;

非同期リストの場合

バックグラウンドでコマンドを実行する形式は次のとおりです。

command1 & [command2 & ... ]

順次リストの場合、

順次実行コマンドの形式は次のとおりです。

command1 [; command2] ...
  1. &1元ですか、2元ですか?;1元ですか、2元ですか?

    &;これはバイナリのように見え、前と後のコマンドに対して機能し、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

  1. 私は一般的にそれらを「オペレーター」とは思わない。私の言葉は、通常、演算子は値を返すということです。&どちらもありません;。代わりに、彼らは声明を終了します。しかし、それらを演算子として考えると、単一のステートメントに対して機能するため、後続の単項演算子になりそうです。

  2. 彼らは左から右から始まります。の場合、&バックグラウンドで非同期的に実行されます。echo 1 & echo 2 & echo 31、2、3は順序に関係なく印刷できます。ここに行く順番に、カーネルは順番に印刷するように予約しないことがあります。ただし、echo 1; echo 2; echo 3常に数字順に印刷されます。echo 1; echo 2 & echo 31は常に最初に印刷されますが、2と3は順序に関係なく印刷できます。

おすすめ記事