如何编程等待并继续在这个bash脚本中

时间:2011-11-04 19:13:08

标签: bash wait continue

我有两个shell脚本说A和B.我需要在后台运行A并在前台运行B直到A在后台完成执行。我需要重复这个过程进行几次运行,因此一旦完成,我需要暂停当前迭代并转移到下一次迭代。

粗略的想法是这样的:

for((i=0; i< 10; i++))  
do  
./A.sh &

for ((c=0; c< C_MAX; c++))  
do  
./B.sh  
done

continue

done

如何使用“wait”和“continue”,以便在A处于后台时B运行多次,并且一旦完成,整个过程将移至下一次迭代

2 个答案:

答案 0 :(得分:3)

使用当前后台进程的PID:

./A.sh &
while ps -p $! >/dev/null; do
    ./B.sh
done

答案 1 :(得分:1)

我只是将粗略的想法转化为bash脚本。 实现等待 - 继续机制(while ps -p $A_PID >/dev/null; do...)的核心思想来自@thiton,后者在您的问题之前发布了答案。

for i in `seq 0 10`
do
  ./A.sh &
  A_PID=$!
  for i in `seq 0 $C_MAX`
  do
    ./B.sh
  done
  while ps -p $A_PID >/dev/null; do
      sleep 1
  done
done