Unixで通常のコマンドを区切るには、次のように最後にセミコロンを付けます。
cd /path/to/file;./someExecutable;
しかし、次のようなコマンドでは機能しないようです。
./myProgram1 > /dev/null &
./myProgram2 > /dev/null &
=>./myProgram1 > /dev/null &;./myProgram2 > /dev/null &;
これらの種類のコマンドを分離する方法はありますか?
また、コマンドプロンプトに貼り付けをコピーした場合、2つ未満の場合は同等ですか?ありがとう。
cd /path/to/file;./someExecutable;
cd /path/to/file;
./someExecutable;
さて「;」コマンドが終了するのをシェルに待機させてから、次のコマンドを続行します。
「&」は、プロセスをバックグラウンドに直接送信し、最初のコマンドが終了したか、まだ実行中であるかに関係なく、次のコマンドを続行します。
そう "&;"期待どおりに機能しません。
しかし、実際にはあなたが何を期待しているのかわかりません。
シェルでこれを試してください:
sleep 2 && echo 1 & echo 2 & sleep 3 && echo 3
出力されます:2 1 3
今それをと比較してください
sleep 2 ; echo 1 & echo 2 & sleep 3 ; echo 3
1 23を出力します
よろしく。
command1 & command2
はcommand1
を実行し、プロセスをバックグラウンドに送信し、command2
が完了していなくても、すぐにcommand1
の実行を開始します。
command1 ; command2
は、command1
が正常に終了したかどうかに関係なく、command2
が終了すると、command1
を実行し、command1
を実行します。
command1 && command2
は、command2
が正常に実行を完了した場合にのみcommand1
を実行します。 command1
が失敗した場合、command2
は実行されません。
(...また、完全を期すために...)
command1 || command2
は、command2
が失敗した場合(ゼロ以外の終了コードで終了する場合)にのみcommand1
を実行します。