2012-01-24 16 views
20

私は2つのコマンドを同時に実行し、両方が完了したら続行するbashスクリプトを書きたいと思っています。bashスクリプトは同時コマンドを実行して、完了するのを待つことができますか?

ここでは動作しないものだが、私は私が何をしようとしている示すために、ここでそれを置くでしょう:

#!/bin/bash 
./job1 & 
./job2 
./dostuffwithresults 

スクリプトが同時にJOB1とJOB2の両方を実行しますが、続行する前にjob2が完了するのを待つだけです。 job1の処理に時間がかかる場合、結果は最終コマンドの準備ができていない可能性があります。

答えて

33
j1 & 
j2 & 
j3 & 
wait $(jobs -p) 
dostuffwithresults 
+6

1を動作するはずですが、それがデフォルトだと待つ引数は、この場合には必要ありません。 –

+0

@JohanLundberg、確かに私は分かりませんでした;-) –

+1

待機する引数を追加する理由は、ジョブからステータスを収集する場合です。残念なことに、リスト内の最後のプロセスのステータスのみを返すので、すべてのステータスをチェック/収集するために反復する必要があります。 – libjack

1

このようなものは

#!/bin/bash 
    while [ `pgrep job*` ] 
    do 
    echo 'waiting' 
    done 

    ./dostuffwithresults 
関連する問題