自學Linux Shell16.1-函數概念

點擊返回 自學Linux命令行與Shell腳本之路html

16.1-函數概念

編寫比較複雜的shell腳本時,完成具體任務的代碼可能須要重複使用。bash shell提供知足這種要求的特性。
函數是被賦予名稱的腳本代碼塊,能夠在代碼的任意位置重用。每當須要在腳本中使用這樣代碼塊時,只需引用該代碼塊被賦予的函數名稱。shell

1. 建立函數

在bash shell腳本中建立函數可使用兩種格式。
一種格式是使用關鍵字function,後跟代碼塊的函數名:編程

1 function name {
2          commands
3 }
  • name屬性定義了該函數的惟一名稱。腳本中自定義的每一個函數都必須賦予惟一的名稱。
  • commands是組成函數的一條或多條bash shell命令。當調用函數是,就像在普通腳本同樣,bash shell按照各條命令在函數中出現的順序依次執行。

另外一個格式,更接近通常編程語言定義函數的方式:bash

1 name() {
2 commands
3 }
  • 函數名以後的空白園括號代表這是在定義函數。
  • 該格式的函數命名規則與前面的shell腳本函數格式相同。

2. 使用函數

  • 函數名func1每次被引用時,bashshell返回func1函數的定義並執行該函數定義的所有名
  • 函數定義不必定位於shell腳本的起始部分,可是應當當心使用。若是在函數定義以前使用函數,會獲得錯誤消息
  • 使用函數前,須要先定義函數
  • 函數的命令須要注意。每一個函數名必須惟一,不然會出問題
  • 若是從新定義函數,那麼新定義將取代函數原先的定義,這不會引起錯誤消息

3.函數返回值

bashshell將函數看做小型腳本,並以退出狀態結束。函數退出的狀態有3中生成方式。編程語言

3.1 默認退出狀態(不使用)
默認狀況下,函數的退出狀態是函數的最後一條命令返回的退出狀態。函數執行完畢以後,可使用標準變量$?來肯定函數的退出狀態函數

 

該函數的退出狀態是2,由於最後一條命令執行失敗。但沒法得知函數的其餘命令是否成功執行。spa

 

因爲函數結尾是可以徹底成功執行的echo語句,雖然有一條命令運行失敗,可是函數的退出狀態仍然是0。因此,使用函數的默認退出狀態是一種危險的作法。命令行

 3.2  使用return命令code

bash shell使用return命令以特定退出函數。return命令可使用單個整數值來定義函數退出狀態,提供一種經過編程設置函數退出狀態的簡單方法。
使用這種方法返回數據時,必須注意避免兩個容易發生的錯誤:htm

  • 在函數完成後儘快提取返回值
  • 退出狀態的取值範圍是0~255      

 

若是想要返回更大的整數值或字符串,那麼不要使用這種返回值方法。

 3.3  使用函數輸出

函數的輸出也能夠捕獲並存放到shell變量中。

  • 這種方法能夠從函數獲取任意類型的輸出並給出變量賦值:result=`db1`。這條命令將函數db1的輸出賦予shell變量$resutl。
  • 這個方法也能夠返回浮點數和字符串值,因此這種方法可以很是靈活地從函數返回數據。
 
新函數result會用echo語句來顯示計算的結果,獲取dbl函數的輸出,而不是查看退出狀態碼。
相關文章
相關標籤/搜索