通常、次のようなコマンドで複数のコマンドを実行します。
sleep 2 && sleep 3
また
sleep 2 ; sleep 3
しかし、1 つのコマンド ライン コマンドから両方をバックグラウンドで実行したい場合はどうすればよいでしょうか。
sleep 2 & && sleep 3 &
動作しません。そしてどちら&&
も;
それを行う方法はありますか?
正確にどのように実行してほしいですか?それらをバックグラウンドで開始して順次実行する場合は、次のようにします。
{ sleep 2; sleep 3; } &
成功sleep 3
した場合にのみ実行する場合は、次のようにします。sleep 2
sleep 2 && sleep 3 &
一方、バックグラウンドで並行して実行したい場合は、代わりに次のようにすることができます。
sleep 2 & sleep 3 &
そして、次のような2つの手法を組み合わせることができます。
{ sleep 2; echo first finished; } & { sleep 3; echo second finished; } &
bashはbashであるため、同じタスクを実行するためのさまざまな手法が多数存在することがよくありますが、それらの間に微妙な違いがある場合もあります。
あなたはあなたの最後のバージョンでいくつかのparensを追加する必要があります-
(sleep 2 &) && (sleep 3 &)
またはこれも機能します-
(sleep 2 &) ; (sleep 3 &)
複数のバックグラウンド コマンドを実行するに&
は、各コマンドの末尾を追加する必要があります。元:
(command1 &) && (command2 &) && (command3 &)
これは機能します:
$(sleep 2 &) && sleep 3 &
また、次のことができます。
$(sleep 2 && sleep 3) &