gpt4 book ai didi

linux - Bash 并行执行和退出代码

转载 作者:行者123 更新时间:2023-12-04 16:17:30 26 4
gpt4 key购买 nike

我想在 bash 脚本中并行运行多个命令,但如果这些命令中的任何一个失败(返回非零退出代码),脚本退出代码必须非零。
我曾尝试使用 sem ( https://www.gnu.org/software/parallel/sem.html ):

cat >script.sh <<EOF
sem -j+0 "sleep 2; echo 1"
sem -j+0 "sleep 4; exit 1; echo 2"
sem -j+0 "sleep 6; echo 3"
sem --wait
EOF
bash script.sh; echo $?
并只是背景的过程:
cat >script.sh <<EOF
{sleep 2; echo 1} &
{sleep 4; exit 1; echo 2} &
{sleep 6; echo 3} &
wait
EOF
bash script.sh; echo $?
在这两种情况下,总体退出代码始终为 0。
有任何想法吗?

最佳答案

but if any of these commands fails (returns a non-zero exit code), the script exit code must be non-zero.


所以写那个条件。
childs=();
{ sleep 0.2; echo 1 ;} &
childs+=($!);
{ sleep 0.4; exit 1; echo 2; } &
childs+=($!);
{ sleep 0.6; echo 3; } &
childs+=($!);

ret=0;
for i in "${childs[@]}"; do
if ! wait "$i"; then ret=1; fi
done
echo "ret=$ret"
exit "$ret"

关于linux - Bash 并行执行和退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65512762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com