bash shell函式中返回任意值的四種方法
阿新 • • 發佈:2019-01-10
From: http://www.jbxue.com/article/11322.html
在bash中,函式更像一個子程式,即其返回值,只能是一個數字,以0表示成功,非0表示失敗。
在bash函式中,返回除了數字之外的值,有三種方法:
在bash shell程式設計中,假如想返回一個字串,可以有如下的方法。
方法1,也是最簡單的方法:
{
myresult='the value'
}
myfunc
echo $myresult
以上方法,通過一個 全域性變數myresult,來儲存返回值。
方法2,子程式呼叫
{
local myresult='some value'
echo "$myresult"
}
result=$(myfunc) # or result=`myfunc`
echo $result
以上方法,將一個shell函式作為一個子程式呼叫,將返回值寫到子程式的標準輸出,來達到返回任意字串的目的。
方法3,通過引用返回函式值
{
local __resultvar=$1
local myresult='some value'
eval $__resultvar="'$myresult'"
}
myfunc result
echo $result
有點類似於C++中的通過引用返回函式值的做法。
以下是結合後兩種方法的集大成,程式碼如下:
{
local __resultvar=$1
local myresult='some value'
if [[ "$__resultvar" ]]; then
eval $__resultvar="'$myresult'"
else
echo "$myresult"
fi
}
myfunc result
echo $result
result2=$(myfunc)
echo $result2
通過二者的結合,該方法的靈活性有了很大提高。