shell數組傳遞

當使用數組做爲函數參數時,發現只能傳遞數組的第一個元素,數組後面的元素不能傳遞到函數內。數組

#!/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
相關文章
相關標籤/搜索