我有以下 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/