函數的調用

把那些在腳本中重複出現並且沒有任何改變的代碼,封裝起來,在適當的場景中調用執行;
程序員將這種被封裝起來的代碼稱爲功能體,或者叫模塊;
function —— 函數

在shell腳本編程中,函數是由若干條shell命令組成的語句塊;通常用於代碼重用和模塊化封裝;

函數裏面的內容和shell程序形式上是一致的;不同之處就是,shell代碼可以直接被執行;而函數中的內容,不能獨立執行,只有被調用的時候才執行;

函數是在shell程序的當前shell中運行的;
bash
 bash script_file
 function

定義函數:
 函數是由兩部分組成:
  函數名稱 + 函數體(能夠實現獨立功能的shell語句塊)

 語法一:
  function func_name {
   函數體
  }

 語法二:
  func_name() {
   函數體
  }
  注意:函數名和()之間不能加空白字符;

 注意:函數可以在交互式環境下定義,也可以在腳本中定義;

函數的使用
 函數在定義的時候,其函數體中包含的所有命令均不會被執行;只有函數被調用的時候,纔會執行其中的命令語句;

 調用方式:通過直接給出函數名稱的方式調用;

有很多的函數是存放於專門用於保存函數的文件中;如果想要調用這樣的文件中保存的函數,使用source命令(.)加載文件,然後再以直接給出函數名稱的方式調用函數;

使用set命令可以查看所有當前shell中生效的函數;
使用unset命令可以撤銷已經定義的函數;

函數的返回值:
 兩種返回值:
  函數的執行結果的返回值:
   1.在函數體中使用了echo或printf命令輸出的結果;
   2.在函數體中某些命令輸出的結果;
  函數的狀態返回值:
   1.函數中最後一條命令的執行狀態返回值;
   2.自定義退出狀態碼:
    return [n]
     n:0-255 (1 2 127儘可能不使用)
     0: 表示無錯誤返回
     1-255:有錯誤返回

    注意:只要函數在執行時,遇到了return命令,不管函數中的命令語句是否全部執行完成,立刻退出函數;

函數的生命週期:
 從被調用開始,到遇到return命令或全部的語句執行完成爲止;

函數的實參
 在函數體中,可以使用$1,$2,..位置變量爲函數提供參數;還可以使用$*或$@的方式引用所有位置參數;還可以使用$#計算爲函數傳遞的參數個數;

 在調用函數的時候,直接在函數名稱後面以空白字符分隔多個參數即可;比如:func_name arg1 arg2 ...

 傳遞給函數參數的位置參數,是調用函數的時候,函數名稱後面的以空白字符分隔的字符串序列;跟腳本的位置參數不是一回事;

變量:
 shell中的變量爲弱變量
  1.無需事先聲明
  2.無需指定變量類型,默認爲字符型

 變量分類:
  環境變量:
   當前shell及子shell
  本地變量:
   當前shell
  局部變量:
   local VAR_NAME=VALUE
   當前函數體
  位置變量
  特殊變量

建議:手動撤銷自己定義或聲明的所有變量;

函數的遞歸調用
 簡單來說,就是在函數體中調用函數自身;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章