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