在下面的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/捕獲並建議一修復程序。 –