如何在 bash 脚本中等待从该脚本生成的几个子进程完成,然后!=0在任何子进程以 code 结尾时返回退出代码!=0?
!=0
简单的脚本:
#!/bin/bash for i in `seq 0 9`; do doCalculations $i & done wait
上面的脚本将等待所有 10 个生成的子进程,但它总是会给出退出状态0(请参阅 参考资料help wait)。如何修改此脚本,以便1在任何子进程以 code 结尾时发现生成的子进程的退出状态并返回退出代码!=0?
0
help wait
1
有没有比收集子进程的 PID、按顺序等待它们并总结退出状态更好的解决方案?
wait还(可选)采用PID等待的进程,并$!获得PID在后台启动的最后一个命令的 。修改循环以将PID每个生成的子进程的 存储到一个数组中,然后再次循环等待每个PID.
wait
PID
$!
# run processes and store pids in array for i in $n_procs; do ./procs[${i}] & pids[${i}]=$! done # wait for all pids for pid in ${pids[*]}; do wait $pid done