子 shell 退出代码影响日志记录

子 shell 退出代码影响日志记录

我有这个 bash 脚本:

echo "x" & X=$!
echo "y" & Y=$!
( echo "z" ; exit 0; ) & Z=$!  # this line

wait ${X} && echo "X $?" 
wait ${Y} && echo "Y $?" 
wait ${Z} && echo "Z $?" 

当我将 exit 0 更改为 exit 1 时,脚本的最后一个 echo 语句不会执行。例如,以下是退出代码为 0 时的输出:

x
X 0
z
y
Y 0
Z 0

但是当我将其更改为1时:

x
y
X 0
z
Y 0

我假设括号中的内容应该在子 shell 中执行。有人知道为什么我的代码会这样做吗?

答案1

如记录在help wait

返回ID的状态

因此,如果进程以 退出1,则 wait 返回1&&通过不执行第二个命令来短路。如果无论第一个命令是否成功都想打印该值,请尝试;而不是。&&

相关内容