書-Linux命令行與shell腳本編程大全(第3版)
●函數-參數
○全域變數&區域變數
●陣列
函數-參數
$# :參數數量
$0 :程式名稱
$1 :第1個參數
$2 :第2個參數
$3 :第3個參數
.
.
.
程式:
有4個參數,在函數中用$#來顯示參數數量。
結果:
程式:
用$0來顯示此程式的名稱
結果:
程式:
使用$1~$4來使用參數,並相加
結果:
之前也有講過在終端機輸入也是用$1~$9,但是這兩個並不衝突,下面我們來在終端機中輸入數字相加。
在function外用就是終端機的,在function內用就是函數的參數。
程式:
結果:
全域變數&區域變數
1.全域變數
基本上,宣告的變數都是全域變數(在任何地方都可以使用),
所以不管在function中還是在哪裡都可以直接的去使用、修改變數的值。
程式:
在function中可以更改tmp的值。
結果:
程式:
可以看到我在function中宣告一個變數val,在function外也可以使用。
結果:
2.區域變數
只能在function中,或是function外使用,目的是為了不要變更某個值。
程式:
使用了關鍵字local,tmp在function中的值並不會更改到function外的tmp。
結果:
陣列
印出陣列的方式是${tmp[*]},加大括號是為了讓tmp跟[*]合在一起。
程式:
如果照一般參數的取得$1會只有陣列的第1個值。
結果:
程式:
在方法中宣告一個新的變數arr,要取得參數(型態為陣列)就要使用($(echo “$@”))
結果:
程式:
這個就是把陣列的內容都*2。
陣列的長度為4,但是陣列是從0開始算,所以要減1。
結果: