直接在函数中定义数组时,下面按预期工作;
function each {
local array=(1 2 3)
len=${#array[*]}
for (( i=0; i<len; i++ )); do
echo ${array[$i]}
done
}
each
# outputs;
1
2
3
但我无法弄清楚如何将数组作为参数传递并实现相同的输出;
function each {
local array=$1
len=${#array[*]}
for (( i=0; i<len; i++ )); do
echo ${array[$i]}
done
}
array=(1 2 3)
each array
# outputs;
array
感谢任何帮助,谢谢。
答案 0 :(得分:1)
我会将数组元素作为不同的位置参数传递给函数:
function f() {
local array = "$@";
# ...
}
## calling your function
f ("${array[@]}")