有没有办法将数组作为单个参数传递给函数?
我尝试了以下方法,但没有成功:
arr=(a b c)
my_func $arr
还有
arr(a b c)
my_func ${arr[*]}
最佳答案
传递 "${arr[@]}"
(@quickshiftin 的答案)是可行的,但需要注意的是,它不会传递数组,但数组的元素作为单独的参数,可以被调用的函数访问,如$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
关于bash - 将数组传递给 bash 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20725985/