bash / shell传递数组然后循环?

时间:2013-02-24 14:02:03

标签: arrays bash shell loops

直接在函数中定义数组时,下面按预期工作;

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

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

我会将数组元素作为不同的位置参数传递给函数:

function f() {
    local array = "$@";
    # ...
}

## calling your function
f ("${array[@]}")