什么是最简单优雅的方式来总结ksh或bash中的数字 我的例子是关于let命令,但我想找到更好的方法来汇总所有数字
例如
num1=1232
num2=24
num3=444
.
.
.
let SUM=$num1+num2+num3.........
答案 0 :(得分:20)
怎么样:
num1=1232
num2=24
num3=444
sum=$((num1+num2+num3))
echo $sum # prints 1700
答案 1 :(得分:3)
同意ghostdog74。我曾经使用$(())内置函数,但我改为bc,因为我们接收数据的格式不是很“数字格式化”。检查以下内容:
jyzuz@dev:/tmp> echo $(( 017 + 2 ))
17
jyzuz@dev:/tmp> echo $(( 17 + 2 ))
19
jyzuz@dev:/tmp>
似乎在第一种情况下它理解为二进制或十六进制数字..不太确定。
所以我换成了bc。你可以选择你喜欢的方式:
bc << EOF
$num1 + $num2 + $num3
EOF
或
bc <<< "$num1 + $num2 + $num3"
还有其他冷却方法可以做到这一点......但如果您发送更多详细信息会很好,例如,如果您正在执行除法,则需要添加bc -l
参数来加载数学库。
答案 2 :(得分:1)
如果将双括号一直移到外面,您可以消除最后一个美元符号并自由地对操作数和运算符(包括变量和赋值运算符)进行空格分隔。
num1=1232
num2=24
num3=444
(( sum = num1 + num2 + num3 ))
(( count++ ))
(( sum += quantity ))
您不能使用增量样式运算符(*= /= %= += -= <<= >>= &= ^= |= ++ --
),除非您使用let
或外部(())
表单(或者您正在增加变量或在右侧进行分配)侧)。
答案 3 :(得分:0)
您可以使用$(())
语法,但如果您有十进制数字,请使用awk或bc / dc进行数学运算,“便携式”。