1

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

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

感谢您的帮助,谢谢。

4

1 回答 1

1

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

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

## calling your function
f ("${array[@]}")
于 2013-02-24T14:07:13.170 回答