Shell函數返回值,一般有3種方式:return,argv,echo
1) return 語句
shell函數的返回值,可以和其他語言的返回值一樣,通過return語句返回。
示例:
結果:
mytest 1
arg1 = 1
1
mytest 0
arg1 = 0
0
mytest 2
arg1 = 2
0
mytest 1 = arg1 = 1
arg1 = 1
mytest 0 = arg1 = 0
arg1 = 0
mytest 0
if fasle
arg1 = 1
mytest 1
arg1 = 0
mytest 0
end
2) argv全局變量
這種就類似於C語言中的全局變量(或環境變量)。
示例:
結果:
mytest2
args 1
return 0
g_var=1
注: 以上兩個方法失效的時候
以上介紹的這兩種方法在一般情況下都是好使的,但也有例外。結果:
yxb3) echo 返回值
其實在shell中,函數的返回值有一個非常安全的返回方式,即通過輸出到標准輸出返回。因為子進程會繼承父進程的標准輸出,因此,子進程的輸出也就直接反應到父進程。因此不存在上面提到的由於管道導致返回值失效的情況。示例:
這個方式雖然好使,但是有一點一定要注意,不能向標准輸出一些不是結果的東西,比如調試信息,這些信息可以重定向到一個文件中解決,特別要注意的是,用到比如grep這樣的命令的時候,一定要記得1>/dev/null 2>&1來避免這些命令的輸出。