いくつかのコマンドを並列に実行したいと思います。これらのコマンドがすべて完了したら、次のコマンドを開始します。私は次のことがうまくいくと思います。
#!/bin/bash
command1 &
command2 &
command3 &&
command4
しかしそれは真実ではない。command4
完全に完了したら、最初の3つのコマンドを実行する必要があります。
ベストアンサー1
#!/bin/bash
command1 &
command2 &
command3 &
wait
command4
wait
(引数なし)すべてのバックグラウンドプロセスが終了するのを待ちます。
wait
マニュアルの完全な説明bash
:
wait [-n] [n ...]
指定された各子プロセスを待って終了ステータスを返します。それぞれは
n
プロセスIDでもジョブ仕様でもかまいません。ジョブ仕様が提供されると、ジョブパイプラインのすべてのプロセスが待機します。 指定しない場合、n
現在アクティブなすべての子プロセスが待機し、戻り状態は0です。-n
このオプションが指定されている場合は、ジョブがwait
終了するのを待ってから終了ステータスを返します。n
存在しないプロセスまたはジョブを指定した場合、戻り状態は127です。そうでない場合、戻り状態は最後の待機プロセスまたはジョブの終了状態です。