Bash &(符号)运算符

标签 bash background-process exit-code

我正在尝试在 bash shell 中并行运行 3 个命令:

$ (first command) & (second command) & (third command) & wait

这个问题是如果first command失败,例如,退出代码是0(我猜是因为wait成功了) .

期望的行为是,如果其中一个命令失败,退出代码将为非零(理想情况下,其他正在运行的命令将停止)。

我怎样才能做到这一点?

请注意,我想并行运行命令!

最佳答案

我能想到的最好的是:

first & p1=$!
second & p2=$!
...

wait $p1 && wait $p2 && ..

wait $p1 || ( kill $p2 $p3 && exit 1 )
...

然而,这仍然强制执行检查进程的命令,因此如果第三个立即失败,您将不会注意到它,直到第一个和第二个完成。

关于Bash &(符号)运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9258387/

相关文章:

python - 如何在根 CA 下生成服务器和客户端证书

bash - 如何在 shell 脚本中捕获 Gradle 退出代码?

java - 从 Java 程序中运行 bash 命令

c# - 使用 ContinueWith 时,Hangfire 中排队的子作业的优先级是什么?

haskell - 如何在给定条件的情况下退出haskell中的main

java - Android java/system/bin/ping 总是返回exitCode 2,为什么?

bash - 为什么 'cp' 在此 shell 脚本中失败?

python - 使用 kubectl exec 运行后台进程

php - 异步PHP

bash - 使用 --help 参数调用的 bash 脚本应该返回 0 还是非零退出代码?