有沒有辦法將數組作爲單個參數傳遞給函數?將數組傳遞給bash函數
我試過,沒有工作的情況如下:
arr=(a b c)
my_func $arr
也
arr(a b c)
my_func ${arr[*]}
有沒有辦法將數組作爲單個參數傳遞給函數?將數組傳遞給bash函數
我試過,沒有工作的情況如下:
arr=(a b c)
my_func $arr
也
arr(a b c)
my_func ${arr[*]}
傳遞"${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
這樣調用
my_func "${arr[@]}"