每種語言都有自己的函數,shell也不例外。支援函數,它可以将腳本程式劃分成一個個相對獨立的代碼塊,使代碼的子產品化,結構更加清晰,并有效地減少程式的代碼量,提高代碼的複用率。
函數格式
function fun_name()
{
action;
}
或者
fun_name()
注:()中不能帶參數
參數都是直接以變量的形式寫在函數中,傳遞參數的時候使用${參數},若果不加${},直接輸入參數,則把參數當作字元串來處理,不會當作變量
例

結果
注:¥?用來接收FunSum的傳回值
例:傳遞參數
注:函數中的參數$後面是多少,則取值的時候就取傳遞的參數中第幾個,當大于9時,函數中要擷取參數需要像示例中擷取第五個參數一樣添加大括号{}
其他特殊字元用來處理參數
$0:是腳本本身的名字
$#:傳遞到腳本的參數個數
$*:以一個單字元串顯示所有向腳本傳遞的參數
$$:腳本運作的目前程序ID号
$!:背景運作的最後一個程序的ID号
$@:與$*相同,但是使用時加引号,并在引号中傳回每個參數
$-:顯示Shell使用的目前選項,與set指令功能相同
$?:顯示最後指令的退出狀态。0表示沒有錯誤,其他任何值表明有錯誤
變量作用域
在函數調用之前,定義變量,則定義的是全局變量,當執行函數的時候讀取變量使用
在函數中定義變量,local key=value,則為函數内部的變量,函數在執行的時候讀取變量使用,但是該變量在函數外不生效