循环内数组元素的乘法

时间:2014-02-06 15:12:31

标签: arrays linux bash shell

这就是问题:我有这个循环,它对元素数组进行求和,并且它可以工作:

for ((i=0: i<$n; i++));
do
ris=$(($ris+${array[$i]}))
done

现在我想做同样的事情,但是使用*运算符代替+以获得数组元素之间的moltiplication:

for ((i=0: i<$n; i++));
do
ris=$(($ris*${array[$i]}))
done

但是在这种情况下我收到了这个错误:

  

表达式中的语法错误(错误标记为“* 3”)

问题出在哪里?

1 个答案:

答案 0 :(得分:2)

在第一次迭代中,ris为空,但

ris=$(($ris+${array[$i]}))

扩展为

ris=$((+${array[$i]}))

什么仍然有效。 使用*运算符不会发生这种情况,所以你应该将$ ris初始化为1(显然不是0)

ris=$((*${array[$i]}))