在 Bash 中,可以使用 wait
命令来等待多个子进程完成,并通过 $?
变量获取子进程的退出代码。可以使用一个循环来检查所有子进程是否已经完成,并使用一个变量来记录是否有任何子进程以代码不等于 0 结束。以下是一个示例脚本:
#!/bin/bash
# 启动多个子进程
process1 &
process2 &
process3 &
# 初始化一个变量来记录是否有任何子进程以代码不等于 0 结束
any_failed=0
# 等待所有子进程完成
for job in $(jobs -p)
do
wait $job
if [ $? -ne 0 ]; then
any_failed=1
fi
done
# 检查是否有任何子进程以代码不等于 0 结束
if [ $any_failed -eq 1 ]; then
echo "At least one child process exited with non-zero status"
else
echo "All child processes exited with zero status"
fi
在这个脚本中,我们首先启动多个子进程,并使用 &
符号将它们放入后台运行。然后,我们使用 jobs -p
命令获取所有子进程的进程 ID,并使用 wait
命令等待它们完成。在循环中,我们检查每个子进程的退出代码,并将 any_failed
变量设置为 1 如果有任何子进程以代码不等于 0 结束。最后,我们检查 any_failed
变量的值,并输出相应的消息。
领取专属 10元无门槛券
手把手带您无忧上云