2012-01-24 19 views
20

我想編寫一個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 
相關問題