2013-12-22 139 views

回答

4

傳遞"${arr[@]}"(@ quickshiftin的答案)功能種類的作品,但重要的是要注意它沒有通過陣列,但數組的元素作爲單獨的參數,到被調用的功能$1$2訪問,...

這具有以下含義:

  • 在調用的函數,你必須重新組裝(雖然這很容易做到:reassembledArray=("[email protected]")
  • 如果輸入數組稀疏,即它的索引不連續,那麼此信息將丟失。

短的是:有沒有辦法陣列這樣

這就是說,如果你調用一個函數而非腳本,你的函數將有機會獲得所有變量在當前shell,所以你可以簡單地直接訪問數組變量的定義在函數調用之前使用相同的shell。

實施例:

my_func() { 
    echo "Elements of arr:" 
    for el in "${arr[@]}"; do echo "[$el]"; done 
} 

arr=(a b c) 
my_func