小编use*_*007的帖子

bash 函数、局部变量和退出代码

在 bash 函数中,我试图捕获命令的输出及其退出代码。一般来说,我的形式是

some_function() {
local rv=$(some_other_function)
local code=$?
echo "$rv"
return $code
}
Run Code Online (Sandbox Code Playgroud)

但我注意到每当我使用“本地”时,然后 $? 总是 0。就像它捕获的是赋值的结果,而不是被调用的函数。如果我不使用“本地”,那么它会按预期工作:

$ foo() { local rv=$(false); echo "code is $?"; }
$ foo
code is 0
$ foo() { rv=$(false); echo "code is $?"; }
$ foo
code is 1
Run Code Online (Sandbox Code Playgroud)

谁可以给我解释一下这个?显然这里有些基本的东西我只是不明白。

variables bash exit-code

1
推荐指数
1
解决办法
457
查看次数

标签 统计

bash ×1

exit-code ×1

variables ×1