带有局部变量的命令的退出状态

带有局部变量的命令的退出状态

我在函数中有一个命令,其输出放置在局部变量中。我想获取该命令的退出状态,但$?总是返回 0。当我使用非局部变量时,我会得到预期的退出状态。

这是一个例子:

function my_fun() {
   local output=$(ls no_file_here_buddy)
   echo $?  # returns 0

   non_local_var=$(ls no_file_here_buddy)
   echo $? # returns 2
}

如何获取其输出存储在局部变量中的命令的退出状态?

答案1

使用时local,包含退出代码,而不是命令的$?退出代码。local只需将变量的声明与赋值分开即可:

local output
output=$(ls no_file_here_buddy)
echo $?

相关内容