获取父级最后一个命令的退出状态

时间:2014-07-15 11:33:46

标签: linux bash parent exit

如果我有一个看起来像这样的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" ]以外,有没有办法绕过这个?

3 个答案:

答案 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}