2013-02-24 56 views
0

当直接在函数中定义一个数组时,下面的工作如预期的那样;bash/shell传递数组然后循环?

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

我会通过数组元素作为不同的位置参数的函数:

function f() { 
    local array = "[email protected]"; 
    # ... 
} 

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

感谢COSTI,将关闭这是欺骗,虽然 – 2013-02-24 14:39:16

+1

我投的实现有已澄清这是一个完整的讨论后,关闭它自己。 :) – 2013-02-24 15:22:59