在下面的bash脚本中,我声明了一个变量后跟一个函数。我试图获得函数的返回值。它应该是1,但它总是0.当我删除本地声明时,它会按我的意愿工作。 为什么本地声明会打破以下函数的返回值? 本地声明是一种类型的命令,如“if []”? 请让我知道原因。为什么从bash中的本地声明之后的函数返回值始终为0?
我的测试功能被以下,
function inner_func() {
local RETURN_00=1
echo "RETURN_00 = $RETURN_00"
echo "RETURN_00 = $RETURN_00" >&2
return $RETURN_00
}
function func() {
local ECHO_00=$(inner_func) # this local declaration is a problem
local RETURN_01=$?
echo "RETURN_01 = $RETURN_01"
echo "RETURN_01 = $RETURN_01" >&2
return $RETURN_01
}
ECHO_01=$(func)
RESULT=$?
echo "RESULT = $RESULT"
的上面的代码
结果因此使用它重置$?
到0
(假设本地跟随
RETURN_00 = 1
RETURN_01 = 0
RESULT = 0
顺便说一句,这是一件http://shellcheck.net/捕获并建议一修复程序。 –