似乎无法在shell中添加两个数字

时间:2016-03-06 01:13:05

标签: bash shell

我一直在谷歌搜索和尝试不同的方法,但似乎没有任何工作。

我有以下代码

string=0 4 5 27 8 7 0 6

total=0

for n in "$string"; do
 total=$(($total + $n))
done

这样我想计算该字符串中所有数字的总和。

我也尝试了expr "$total" + "$n",但这给了我一个错误,说操作数不是整数。

有什么建议我可以做这个工作吗?

3 个答案:

答案 0 :(得分:2)

不引用in子句中的字符串,引用的字符串不会分成单词:

#! /bin/bash
total=0
string='0 4 5 27 8 7 0 6'
for n in $string ; do
    (( total += n ))
done
echo $total

答案 1 :(得分:1)

string=0 4 5 27 8 7 0 6

这会尝试将变量string设置为0,然后使用参数4调用命令5 27 8 7 0 6

您需要引用值:

string="0 4 5 27 8 7 0 6"

您需要在引用它时删除引号;变化

for n in "$string"; do

for n in $string; do

答案 2 :(得分:-1)

您应该使用:

total=$(( total + n ))

$语句

中的变量之前不需要$(( ))