如果我有一个看起来像这样的bash脚本:
some_command
. some_bash
some_bash
看起来像这样:
if [ "$?" != "0" ]
then
do_something
else
do_something_else
fi
我希望在父级环境(some_bash
)中执行的.
会获得父级的退出状态($?
) some_command
。但它并没有。我猜它正在成功调用自己的退出状态,这总是正确的。
除some_bash $?
和if [ "$1" != "0" ]
以外,有没有办法绕过这个?
答案 0 :(得分:1)
考虑将值传递给命令:
some_command
. some_bash "$?"
if [[ $1 -ne 0 ]]; then
虽然它会替换当前存在的任何位置参数。
答案 1 :(得分:0)
您可以编写函数而不是脚本并使用它:
foo() {
if [ "$?" != "0" ]
then
do_something
else
do_something_else
fi
}
some_command
foo
您可以在某些脚本中定义foo,比如script.sh。然后你就可以使用它:
. script.sh
some_command
foo
答案 2 :(得分:0)
您可以导出退出状态:
some_command
export LASTRETURN=$?
. some_bash
在some_bash中你可以使用
${LASTRETURN}