首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在bash中等待多个子进程完成并返回退出代码!= 0当任何子进程以代码结束时!= 0?

在 Bash 中,可以使用 wait 命令来等待多个子进程完成,并通过 $? 变量获取子进程的退出代码。可以使用一个循环来检查所有子进程是否已经完成,并使用一个变量来记录是否有任何子进程以代码不等于 0 结束。以下是一个示例脚本:

代码语言:bash
复制
#!/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 变量的值,并输出相应的消息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券