同時に実行されるいくつかのコマンドを実行した後、bashコマンドを実行しますか?

同時に実行されるいくつかのコマンドを実行した後、bashコマンドを実行しますか?

いくつかのコマンドを並列に実行したいと思います。これらのコマンドがすべて完了したら、次のコマンドを開始します。私は次のことがうまくいくと思います。

#!/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です。そうでない場合、戻り状態は最後の待機プロセスまたはジョブの終了状態です。

おすすめ記事