形式 | 說明 |
---|---|
$# | 傳遞到腳本的參數(shù)個(gè)數(shù) |
$* | 以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù) |
$$ | 腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào) |
$! | 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的ID號(hào) |
$@ | 與$*相同,但是使用時(shí)加引號(hào),并在引號(hào)中返回每個(gè)參數(shù)。 |
$- | 顯示Shell使用的當(dāng)前選項(xiàng),與set命令功能相同。 |
$? | 顯示最后命令的退出狀態(tài)。0表示沒有錯(cuò)誤,其他任何值表明有錯(cuò)誤。 |
3.2 傳遞參數(shù)有空格
本節(jié)程序?qū)崿F(xiàn)向被調(diào)用函數(shù)傳遞有空格的參數(shù),我們將上節(jié)“helloworld!”加個(gè)空格變?yōu)椤癶ello world!”如下:
testFun(){ echo $1 } param="hello world!" testFun $param
運(yùn)行如下:
可以看到只有空格前的“hello”被打印了出來,空格后的“world!”并沒被打印出來(實(shí)際上空格后的"world!"被識(shí)別成了$2)
要傳遞有空格的參數(shù)也簡(jiǎn)單,在傳遞時(shí)加上雙引號(hào)即可(單引號(hào)就不被認(rèn)為是變量了所以不能用單引號(hào)),代碼如下:
testFun(){ echo $1 } param="hello world!" testFun "$param"
運(yùn)行如下:
四、獲取返回值
4.1 返回整型
testFun(){ echo "helloworld!" return 99 } # 千萬要注意shell并不像其他語言直接返回返回值,其返回值放到$?中,這也是為什么只能返回整型的原因 # 所以這種承接方法是錯(cuò)誤的,獲取到的值是echo打印的內(nèi)容 # return_value=`testFun` # 以下才是正確獲取通過return返回的返回值的正確寫法 testFun echo "the return value is: $?"
4.2 返回字符串
我們?cè)谇懊嬉恢闭fshell函數(shù)只能返回整型不能返回字符串,我們?cè)囈幌聫?qiáng)行返回字符串,代碼如下:
testFun(){ echo "helloworld!" return "success" } testFun
運(yùn)行如下,可以看到運(yùn)行到return處報(bào)錯(cuò)“-bash: return: success: numeric argument required”
所以要通過return返回字符串是沒戲的,我們有兩個(gè)變通的方法,第一種是通過$()獲取函數(shù)的所有打印,代碼如下:
testFun(){ echo "helloworld!" echo "success" } return_value=$(testFun) echo "$return_value"
運(yùn)行如下:
可以看到成功獲取到了‘success“。但同時(shí)也可以看到這種做法獲取到的被調(diào)用函數(shù)的所有輸出,單要返回值到得單獨(dú)解析一下
另外的一種做法是直接用一個(gè)變量,shell的變量都是全局的在被調(diào)用函數(shù)中賦值的變量在調(diào)用函數(shù)處也可獲取,代碼如下:
testFun(){ echo "helloworld!" return_value="success" } testFun echo $return_value
運(yùn)行如下:
參考:
http://edu.jb51.net/linux/linux-shell-passing-arguments.html
以上就是詳解shell 函數(shù)定義與調(diào)用的詳細(xì)內(nèi)容,更多關(guān)于Shell 函數(shù)定義與調(diào)用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:黔南 隴南 河池 常州 河北 黔南 淮南 通遼
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解shell 函數(shù)定義與調(diào)用》,本文關(guān)鍵詞 詳解,shell,函數(shù),定義,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。