自學Linux Shell16.2-函數中使用變量

點擊返回 自學Linux命令行與Shell腳本之路html

16.2-函數中使用變量

1. 向函數傳遞參數

  • 函數能夠使用標準參數環境變量來表示命令行傳遞給函數的參數。例如,
         函數名在變量$0中定義,函數命令行的其餘參數使用變量$1和$2等定義。
         專用變量$#能夠用來肯定傳遞給函數的參數數目。
  • 在腳本中指定函數時,必須在函數所在命令行提供參數值。func1 $value1 10
  • 因爲函數爲本身的參數值使用專用的參數環境變量,因此函數沒法從腳本命令行直接訪問腳本參數值。

 以上含義:函數addem首先檢查傳遞給它的參數數目。程序員

  • 若是沒有任何參數,或者參數數目超過兩個,那麼返回值爲-1。
  • 若是隻有一個參數,那麼這個參數與本身相加做爲結果。
  • 若是有兩個參數,那麼兩個參數相加做爲結果。

2. 在函數中處理變量

變量做用域是shell腳本程序員遇到的常見問題。做用域是變量的可見區域。函數內定義的變量與普通變量有不一樣的做用域,前者能被腳本外部定義的變量所覆蓋。shell

函數使用兩種類型的變量:  函數

  • 全局變量
  • 局部變量

2.1 全局變量

全局變量是在shell腳本中到處有效的變量。一樣,若是在函數內部定義了全局變量,那麼腳本的主代碼也能夠獲取該變量的值。
默認狀況下,腳本中定義的變量都是全局變量。在函數外部定義的變量,在函數內部仍能正常訪問。命令行

 變量temp已經在函數內部使用,而又在函數外部賦值,因此生成的結果會出人意料。全局變量保存最後一次運算結果的值。3d

2.2 局部變量

  • 函數內部使用的變量能夠稱爲局部變量。這隻須要在變量聲明前加上關鍵字:local temp。
  • 也能夠給局部變量賦值語句前加上local關鍵字:local temp=$[ $value +5 ]。
  • 關鍵字local確保變量僅在函數內部使用。若是腳本在函數外部有同名變量,那麼shell將能區分開這兩個變量。能夠很容易地將函數變量與腳本變量區分開來,而只共享須要的變量。

 

......htm

相關文章
相關標籤/搜索