當使用數組做爲函數參數時,發現只能傳遞數組的第一個元素,數組後面的元素不能傳遞到函數內。數組
#!/bin/bash function showArr(){ arr=$1 for i in ${arr[*]}; do echo $i done } regions=("GZ" "SH" "BJ") showArr $regions exit 0
把代碼保存爲test.sh後執行,只輸出了第一個元素。bash
./test.sh GZ
$1表示獲取函數的第一個參數,而函數的第一個參數就是regions數組,這樣就奇怪了,爲何只能獲取到數組的第一個元素呢?函數
經測試測試
echo $regions
只會輸出第一個元素,因此使用regions做爲參數傳遞,只會傳遞第一個元素。code
所以須要把參數寫成 「${regions[*]}」 才能夠做爲數組傳遞。it
代碼修改後以下:io
#!/bin/bash function showArr(){ arr=$1 for i in ${arr[*]}; do echo $i done } regions=("GZ" "SH" "BJ") showArr "${regions[*]}" exit 0
運行後輸出數組全部元素,所以修改後能夠把數組做爲函數參數傳遞使用。function
./test.sh GZ SH BJ