shell函數

一、函數介紹function
    爲了不代碼重複使用,咱們通常經過函數編寫代碼塊,而這一個代碼塊用來實現某種功能。
    且,這個功能在後面的代碼中,會重複調用;  
二、函數的語法格式
(1)函數的寫法格式:
      function check_cpu {
          cat /proc/cpuinfo
      }
      ls /etc/
      check_cpu 【不調用函數,則函數體中的命令是不會執行的;在哪裏調用,函數體中的命令就在那裏執行】shell

(2)*fun_name() {
        函數體
        $1 $2 ... $10
    }
    fun_name 1 2 3
    :wq
    function.sh 4 5 6 7 8 9 10 11 12 13 14
三、函數的調用  -- return
函數返回值
   (1)當函數中指定了判斷語句的時候,咱們默認要返回一個錯誤的結果,可是最近一條命令確實正確的,這時候,咱們須要經過return返回一個咱們須要的錯誤狀態碼;
   (2)函數結束的時候,咱們須要指定一個return的正確返回碼; 若是使用在循環語句中,return會跳出循環;
四、函數接受參數
    函數 變量
    和普通的命令同樣
    只須要注意,在函數接受參數的時候,不會使用外部的傳參,而是以腳本內部的參數爲準,  
五、函數中的變量
(1)本地變量
        local 變量名=xxx
        本地變量只在本函數內部生效bash

(2)局部變量
        腳本內部的變量
(3)環境變量
        在整個Linux系統的bash中生效  函數

TEST() {
       local i=9
       let i++
       echo i
       exit 0
}
i=1
TEST
echo i

  (4) 關於腳本執行的問題:
      bash 的方式來執行 -- #!/bin/bash
         bash所執行的腳本中定義的變量,在當前shell的子shell中;
      全路徑或者相對路徑的方式來執行; -- 須有受權執行權限;
      source 腳本文件 或者 . 腳本文件
           source這種方式來執行腳本的時候,內部變量所定義的值是在當前shell中的;
六、函數遞歸
    n的階乘   ui

n! = n(n-1)!
$[$1*  $[ fac -1]]
fact(){
     if [ $1 -lt 1 ];then
         echo 1  //必定要寫成1
     else
          i=$[$1*$(fact $[$1-1])]  //  n(n-1)
          echo $i
      fi
}
(n-1) = (n-1)(n-2)!
2!=2*1!
fac(){
        $[fac -1 ]
}
fac 5

    兔子數列,斐波那契數列  spa

#!/bin/bash
#
fab(){
        if [ $1 -eq 1 ];then
            echo 1
        elif [ $1 -eq 2 ];then
            echo 1
        else
            echo $[$(fab $[$1-1])+$(fab $[$1-2])]
        fi
}
fab 7
相關文章
相關標籤/搜索