Bashはスクリプトのすべてのサブプロセスを待ちます。

Bashはスクリプトのすべてのサブプロセスを待ちます。

スクリプトがあります

for i in 1 2 3 4; do
    do_something $i &
done

呼び出すと、do_something他のすべての項目が終了する前に終了します。私が見つけたこの問題さまざまな答えがあります。

編集するhelp wait教えてください

IDが指定されていない場合は、現在アクティブなすべての子プロセスが待機し、ステータス0が返されます。

wait最後に1つだけ追加すれば十分ですか?

ベストアンサー1

はい、waitすべてのバックグラウンドジョブが終了するのを待つには、最後にパラメータなしで単一のコマンドを使用するだけで十分です。

サブシェルで開始されたバックグラウンドジョブは、そのジョブを開始したのと同じサブシェルで待機する必要があります。表示されるコードにはそのようなインスタンスはありません。

また参考にしてくださいあなたがリンクした質問に関する質問終了ステータスの確認バックグラウンドタスク。これ会議各バックグラウンドジョブに対して1回実行する必要がありますwait(ジョブのPIDを引数として使用)。

おすすめ記事