我一直在谷歌搜索和尝试不同的方法,但似乎没有任何工作。
我有以下代码
string=0 4 5 27 8 7 0 6
total=0
for n in "$string"; do
total=$(($total + $n))
done
这样我想计算该字符串中所有数字的总和。
我也尝试了expr "$total" + "$n"
,但这给了我一个错误,说操作数不是整数。
有什么建议我可以做这个工作吗?
答案 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 ))
$
语句
$(( ))