2014-02-13 113 views
1

我試圖訪問我的數組作爲參數傳遞給我的shell腳本中的函數。我能夠處理數組的單個元素,但是當我試圖找到數組的長度,那隻能說明1.我的腳本是:Shell腳本 - 查找作爲參數傳遞給函數的數組的長度

ar=(8 2 3 4 5 6 7) 

test() { 

    sum=0 
    ref=$1[@] 
    echo ${#ref[@]} 

    for i in ${!ref} 
    do 
     sum=`expr $sum + $i` 
    done 
    echo "sum is: $sum" 
} 

test ar 

如果我做

echo ${#ref} 

它給了我5結果。不知道這個結果的原因。

有什麼辦法可以找到解決辦法嗎?

+0

這不是參數傳遞在bash是如何工作的。或變量。 –

+0

你能幫我解決嗎? – AppleBud

回答

1
ts() { 
    set $1[*] 
    ref=(${!1}) 
    echo ${#ref[*]} 
    for i in ${ref[*]} 
    do 
    ((sm += i)) 
    done 
    echo sum is: $sm 
} 
ar=(8 2 3 4 5 6 7) 
ts ar 

輸出

 
7 
sum is: 35 
+0

謝謝@Steven ...它工作正常。請回答Tim的問題。我也想知道...... :)。謝謝。 – AppleBud

相關問題