我正在尝试运行多个后台进程,然后如果其中任何一个失败则退出并显示错误。无论出于何种原因,我都无法从wait
获得退出状态,以便按照文档记录。这很令人抓狂,因为如果我从命令行手动尝试#!/bin/bash -ex
# ...
pids=
for remote in $REMOTE; do
ssh $remote run-script.sh & pids=${pids:+${pids} }$!
done
set +e
wait $pids
result=$?
set -e
echo $result # should be nonzero because remote script exits with 1
,我会得到预期的结果,但是当我尝试运行启动远程进程的脚本时,等待总是成功。
exit 1
调试输出(++ pids=
++ for remote in '$REMOTE'
++ pids=8142
++ set +e
++ wait 8142
++ ssh user@host run-script.sh
++ exit 1
++ result=0
++ set -e
++ echo 0
0
来自远程脚本)
wait < <(jobs -p)
我也尝试过使用作业,但如果脚本快速结束,则因为结果不一致而放弃了作业:
String submitAction