Shell脚本 - 查找作为参数传递给函数的数组的长度

时间:2014-02-13 04:38:34

标签: arrays shell

我正在尝试将我的数组作为参数传递给我的shell脚本中的函数。我能够处理数组的单个元素但是当我尝试查找数组的长度时,它只显示1.我的脚本是:

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个结果。不知道这个结果的原因。

有什么方法可以找到解决方法吗?

1 个答案:

答案 0 :(得分: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
相关问题