"wait" は for ループで開始されたプロセスには使用されますが、以前に開始された他のプロセスには使用されません。

複数のバックグラウンドジョブが実行されていますが、もう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を渡してください。。しかし、ループ内でプロセスを開始するので、forPIDを簡単に取得することはできません。

私はこれを試しましたが、運がありませんでした。

{ 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サブシェルでのみ有効です。

おすすめ記事