2014-02-13 119 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

相关问题