有没有办法将数组作为单个参数传递给函数?
我尝试了以下无效的方法:
arr=(a b c)
my_func $arr
以及
arr(a b c)
my_func ${arr[*]}
答案 0 :(得分:4)
传递"${arr[@]}"
(@ quickshiftin的答案)类似的工作,但重要的是要注意它不传递数组,但数组的元素作为单独的参数< / em>,可以将调用的函数作为$1
,$2
,...
这具有以下含义:
reassembledArray=( "$@" )
缺点:没有办法传递数组这样。
也就是说,如果你正在调用函数而不是脚本,你的函数将可以访问当前shell中的所有变量,所以你可以简单地< em>直接访问函数调用之前在同一个shell中定义的数组变量。
示例:
my_func() {
echo "Elements of arr:"
for el in "${arr[@]}"; do echo "[$el]"; done
}
arr=(a b c)
my_func
答案 1 :(得分:1)
像这样调用函数
my_func "${arr[@]}"