我有以下 sh 文件:

#!/usr/bin/env bash
ecs deploy [some not relevant stuff here] & \
ecs deploy [some not relevant stuff here] & \
ecs deploy [some not relevant stuff here] & \
ecs deploy [some not relevant stuff here] & \
ecs deploy [some not relevant stuff here] & \
ecs deploy [some not relevant stuff here]

这部分有效,因为它确实同时运行部署命令,但如果任何部署的退出代码大于 0,我必须返回适当的退出代码。

有没有办法只用bash来完成这个?如果可能,不使用任何 tmp 文件,只使用变量。

最佳答案

不清楚为什么你想要最大的退出代码;如果没有更多信息,我假设您只是想返回一个非零退出代码,如果任何其他进程具有非零退出代码。

ecs deploy [some not relevant stuff here] & pids+=($!)
ecs deploy [some not relevant stuff here] & pids+=($!)
ecs deploy [some not relevant stuff here] & pids+=($!)
ecs deploy [some not relevant stuff here] & pids+=($!)
ecs deploy [some not relevant stuff here] & pids+=($!)
ecs deploy [some not relevant stuff here] & pids+=($!)

rv=0
for pid in "${pids[@]}"; do
  wait "$pid" || rv=1
done
exit "$rv"

关于bash - 如何并发运行但如果失败则退出1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44528956/

10-10 02:49