从子 shell 错误退出

从子 shell 错误退出

我有这个命令:

echo $(bash main.sh)

在 中main.sh,我运行了一个 Java 程序,该程序立即抛出异常。echo 的退出代码为 0,这意味着命令成功。有没有办法让它使用 的退出代码失败bash main.sh

的使用echo不是强制性的,可以用另一个程序代替。

答案1

您可以先将命令替换保存在变量中,这样您就可以保留退出代码:

output=$(bash main.sh)
exit_code=$?

some-command "$output"
(exit "$exit_code") # now $? will have exit status of the script

例子:

$ foo=$(echo bar; false)
$ ret=$?
$ echo $ret
1

相关内容