2012-01-24 21 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 
相关问题