241

通常、次のようなコマンドで複数のコマンドを実行します。

sleep 2 && sleep 3

また

sleep 2 ; sleep 3

しかし、1 つのコマンド ライン コマンドから両方をバックグラウンドで実行したい場合はどうすればよいでしょうか。

sleep 2 & && sleep 3 &

動作しません。そしてどちら&&;

それを行う方法はありますか?

4

7 に答える 7

456

正確にどのように実行してほしいですか?それらをバックグラウンドで開始して順次実行する場合は、次のようにします。

{ 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であるため、同じタスクを実行するためのさまざまな手法が多数存在することがよくありますが、それらの間に微妙な違いがある場合もあります。

于 2013-01-30T20:00:39.947 に答える
56

あなたはあなたの最後のバージョンでいくつかのparensを追加する必要があります-

(sleep 2 &) && (sleep 3 &)

またはこれも機能します-

(sleep 2 &) ; (sleep 3 &)
于 2013-01-30T19:49:36.370 に答える
11

複数のバックグラウンド コマンドを実行するに&は、各コマンドの末尾を追加する必要があります。元: (command1 &) && (command2 &) && (command3 &)

于 2013-01-31T12:05:25.037 に答える
3

これは機能します:

$(sleep 2 &) && sleep 3 &

また、次のことができます。

$(sleep 2 && sleep 3) &
于 2013-01-30T19:48:12.343 に答える