天天看點

shell程式設計-函數(九)

每種語言都有自己的函數,shell也不例外。支援函數,它可以将腳本程式劃分成一個個相對獨立的代碼塊,使代碼的子產品化,結構更加清晰,并有效地減少程式的代碼量,提高代碼的複用率。

函數格式

  function fun_name()

  {

  action;

  }

  

  或者

  fun_name()

  注:()中不能帶參數

  參數都是直接以變量的形式寫在函數中,傳遞參數的時候使用${參數},若果不加${},直接輸入參數,則把參數當作字元串來處理,不會當作變量

shell程式設計-函數(九)

結果

shell程式設計-函數(九)

注:¥?用來接收FunSum的傳回值

例:傳遞參數

shell程式設計-函數(九)
shell程式設計-函數(九)

注:函數中的參數$後面是多少,則取值的時候就取傳遞的參數中第幾個,當大于9時,函數中要擷取參數需要像示例中擷取第五個參數一樣添加大括号{}

其他特殊字元用來處理參數

  $0:是腳本本身的名字

  $#:傳遞到腳本的參數個數

  $*:以一個單字元串顯示所有向腳本傳遞的參數

  $$:腳本運作的目前程序ID号

  $!:背景運作的最後一個程序的ID号

  $@:與$*相同,但是使用時加引号,并在引号中傳回每個參數

  $-:顯示Shell使用的目前選項,與set指令功能相同

  $?:顯示最後指令的退出狀态。0表示沒有錯誤,其他任何值表明有錯誤

變量作用域

  在函數調用之前,定義變量,則定義的是全局變量,當執行函數的時候讀取變量使用

  在函數中定義變量,local key=value,則為函數内部的變量,函數在執行的時候讀取變量使用,但是該變量在函數外不生效