2013-02-24 61 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