如果我有这样的bash脚本:

some_command
. some_bash

看起来是这样的:
if [ "$?" != "0" ]
then
 do_something
else
 do_something_else
fi

我预计,some_bash在父环境(some_bash)中执行,将得到父级.的退出状态($?)。但它不是。我猜想它正在获得一个成功地调用它自己的退出状态,这总是正确的。
除了some_commandsome_bash $?,还有什么方法可以绕过这个问题吗?

最佳答案

考虑将值传递给命令:

some_command
. some_bash "$?"

if [[ $1 -ne 0 ]]; then

尽管它将替换当前存在的任何位置参数。

08-17 09:13