我有两个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运行多次,并且一旦完成,整个过程将移至下一次迭代
答案 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