複数のバックグラウンドジョブが実行されていますが、もう2つのバックグラウンドジョブを実行したいのですが、最後の2つだけを待ちたいとします。たとえば、
# long running commands
sleep 60 &
sleep 60 &
# now wait only for these two:
sleep 5 & sleep 5 & wait; echo waited only for the 5s sleeps.
上記のコマンドの結果は、echoコマンドが60秒間待機することです。
私もできることを知っています待つpidまたはjobidを渡してください。。しかし、ループ内でプロセスを開始するので、for
PIDを簡単に取得することはできません。
私はこれを試しましたが、運がありませんでした。
{ sleep 3 & sleep 5 & } wait; echo did not wait :
sleep 10 & { sleep 3 ; sleep 3 ; }& wait %2; echo only wait 3s
PS:この質問は無理です。この簡単な質問。
ベストアンサー1
サブシェルを起動できます。
{ sleep 20 && echo second output ; }
( sleep 2 & wait && echo first output )
サブシェルのコマンドは、そのwait
サブシェルでのみ有効です。