編寫比較複雜的shell腳本時,完成具體任務的代碼可能須要重複使用。bash shell提供知足這種要求的特性。
函數是被賦予名稱的腳本代碼塊,能夠在代碼的任意位置重用。每當須要在腳本中使用這樣代碼塊時,只需引用該代碼塊被賦予的函數名稱。shell
在bash shell腳本中建立函數可使用兩種格式。
一種格式是使用關鍵字function,後跟代碼塊的函數名:編程
1 function name { 2 commands 3 }
另外一個格式,更接近通常編程語言定義函數的方式:bash
1 name() { 2 commands 3 }
bashshell將函數看做小型腳本,並以退出狀態結束。函數退出的狀態有3中生成方式。編程語言
3.1 默認退出狀態(不使用)
默認狀況下,函數的退出狀態是函數的最後一條命令返回的退出狀態。函數執行完畢以後,可使用標準變量$?來肯定函數的退出狀態函數
該函數的退出狀態是2,由於最後一條命令執行失敗。但沒法得知函數的其餘命令是否成功執行。spa
因爲函數結尾是可以徹底成功執行的echo語句,雖然有一條命令運行失敗,可是函數的退出狀態仍然是0。因此,使用函數的默認退出狀態是一種危險的作法。命令行
3.2 使用return命令code
bash shell使用return命令以特定退出函數。return命令可使用單個整數值來定義函數退出狀態,提供一種經過編程設置函數退出狀態的簡單方法。
使用這種方法返回數據時,必須注意避免兩個容易發生的錯誤:htm
若是想要返回更大的整數值或字符串,那麼不要使用這種返回值方法。
3.3 使用函數輸出
函數的輸出也能夠捕獲並存放到shell變量中。