我在一个函数中有一个命令,它的输出放在一个局部变量中。我想获得该命令的退出状态,但$?总是返回 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
}
Run Code Online (Sandbox Code Playgroud)
如何获得输出存储在局部变量中的命令的退出状态?
cho*_*oba 21
使用时local,$?包含 的退出代码local,而不是您的命令的退出代码。只需将变量的声明与赋值分开:
local output
output=$(ls no_file_here_buddy)
echo $?
Run Code Online (Sandbox Code Playgroud)