如何知道后台作业是否在shell脚本中完成?

时间:2013-12-16 17:48:51

标签: linux bash shell unix

如何知道后台作业是否在shell脚本中完成?

n=0
while [ $n le 10 ]
do 
dosomething &
n= `expr $n + 1`
done

我们如何知道所有dosomething过程是否已完成?

完成后我想打印echo "done"

2 个答案:

答案 0 :(得分:3)

您可以使用wait,如下所示:

n=0
while [ $n le 10 ]
do 
  dosomething &
done
wait
# all dosomething are finished here

如果你需要等待其中的一小部分,你可以使用wait $pid,等待特定的pid,你可以通过执行$!获得,这意味着给我一个pid最后一个命令。

编辑:

我已经看到有关于此事的两个问题,请看一下:

其中第二个似乎只是你问题的副本,我投票决定关闭它。

答案 1 :(得分:0)

您可以使用以下内容:

for i in {1..10}; do 
    command &
done; wait

使用for循环和一系列数字会略微缩短。