bash shell函数中返回任意值的四种方法
生活随笔
收集整理的這篇文章主要介紹了
bash shell函数中返回任意值的四种方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
From: http://www.jbxue.com/article/11322.html
在bash中,函數(shù)更像一個子程序,即其返回值,只能是一個數(shù)字,以0表示成功,非0表示失敗。
在bash函數(shù)中,返回除了數(shù)字之外的值,有三種方法:
在bash shell編程中,假如想返回一個字符串,可以有如下的方法。
方法1,也是最簡單的方法:
?
{?
??? myresult='the value'?
}?
myfunc?
echo $myresult?
以上方法,通過一個全局變量myresult,來保存返回值。
?
方法2,子程序調(diào)用
?
{?
??? local? myresult='some value'?
??? echo "$myresult"?
}?
??
result=$(myfunc)?? # or result=`myfunc`?
echo $result?
?
以上方法,將一個shell函數(shù)作為一個子程序調(diào)用,將返回值寫到子程序的標(biāo)準(zhǔn)輸出,來達(dá)到返回任意字符串的目的。
?
方法3,通過引用返回函數(shù)值
?
{?
??? local? __resultvar=$1?
??? local? myresult='some value'?
??? eval $__resultvar="'$myresult'"?
}?
??
myfunc result?
echo $result?
?
有點類似于C++中的通過引用返回函數(shù)值的做法。
以下是結(jié)合后兩種方法的集大成,代碼如下:
?
{?
??? 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
通過二者的結(jié)合,該方法的靈活性有了很大提高。
總結(jié)
以上是生活随笔為你收集整理的bash shell函数中返回任意值的四种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016-1-27
- 下一篇: 带头节点的链式存储栈基本操作(进栈、出栈