![带有局部变量的命令的退出状态](https://linux22.com/image/164356/%E5%B8%A6%E6%9C%89%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F%E7%9A%84%E5%91%BD%E4%BB%A4%E7%9A%84%E9%80%80%E5%87%BA%E7%8A%B6%E6%80%81.png)
我在函数中有一个命令,其输出放置在局部变量中。我想获取该命令的退出状态,但$?
总是返回 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 $?