问题是:我有一个求和元素数组的循环,它可以工作:

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”)
问题在哪里?

最佳答案

在第一次迭代中,ris是空的,但是

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

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

什么仍然有效。
*运算符不会发生这种情况,因此应该将$ris初始化为1(显然不是0)
ris=$((*${array[$i]}))

10-04 11:16