我在函数中有一个命令,其输出放置在局部变量中。我想获取该命令的退出状态,但$?
总是返回 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 $?