因工作需要,需要使用shell開發一些小工具,當使用數組作為函數參數時,發現只能傳遞數組的第一個元素,數組后面的元素不能傳遞到函數內。
#!/bin/bashfunction showArr(){ arr=$1 for i in ${arr[*]}; do echo $i done}regions=("GZ" "SH" "BJ")showArr $regionsexit 0
把代碼保存為test.sh后執行,只輸出了第一個元素。
./test.shGZ
$1表示獲取函數的第一個參數,而函數的第一個參數就是regions數組,這樣就奇怪了,為什么只能獲取到數組的第一個元素呢?
經測試
echo $regions
只會輸出第一個元素,所以使用regions作為參數傳遞,只會傳遞第一個元素。
因此需要把參數寫成 “${regions[*]}” 才可以作為數組傳遞。
代碼修改后如下:
#!/bin/bashfunction showArr(){ arr=$1 for i in ${arr[*]}; do echo $i done}regions=("GZ" "SH" "BJ")showArr "${regions[*]}"exit 0
運行后輸出數組所有元素,因此修改后可以把數組作為函數參數傳遞使用。
./test.shGZSHBJ
以上這篇shell 使用數組作為函數參數的方法(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答