從bash函數中返回任意值
Bash函數,不同於其他編程語言的函數,它更像一個子程序,即其返回值,只能是一個數字,以0表示成功,非0表示失敗。如果,在bash函數中想返回除了數字之外的值,有三種方法: www.2cto.com
1.假設我們想返回一個字符串,最簡單的方法是:
Shell代碼
function myfunc()
{
myresult='the value'
}
myfunc
echo $myresult
通過一個全局變量myresult,來保存返回值。使用全局變量,其缺點也是不言而喻的。
www.2cto.com
2.第二種方法:
Shell代碼
function myfunc()
{
local myresult='some value'
echo "$myresult"
}
result=$(myfunc) # or result=`myfunc`
echo $result
將一個shell函數作為一個子程序調用,將返回值寫到子程序的標准輸出,來達到返回任意字符串的目的。
3.第三種方法:
Shell代碼
function myfunc()
{
local __resultvar=$1
local myresult='some value'
eval $__resultvar="'$myresult'"
}
myfunc result
echo $result
這種方法,類似於C++中的通過引用返回函數值的做法。
www.2cto.com
另外,還可以結合後兩種方法:
Shell代碼
function myfunc()
{
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
這樣,獲得了最大的靈活。