shell脚本+数字总和

lid*_*dia 9 bash ksh

什么是最简单优雅的方式来总结数字在ksh或bash我的例子是关于let命令,但我想找到更好的方法来汇总所有数字

例如

num1=1232
num2=24 
num3=444
.
.
.

let SUM=$num1+num2+num3.........
Run Code Online (Sandbox Code Playgroud)

cod*_*ict 24

怎么样:

num1=1232
num2=24 
num3=444
sum=$((num1+num2+num3))
echo $sum # prints 1700
Run Code Online (Sandbox Code Playgroud)


jyz*_*jyz 5

同意 Ghostdog74 的观点。我曾经使用过 $(( )) 内置函数,但我改为 bc 因为我们接收数据的格式不是很“数字格式”。检查如下:

jyzuz@dev:/tmp> echo $(( 017 + 2 ))
17
jyzuz@dev:/tmp> echo $(( 17 + 2 ))
19
jyzuz@dev:/tmp>
Run Code Online (Sandbox Code Playgroud)

似乎在第一种情况下它理解为二进制或十六进制数字..不太确定。

所以我改成了bc。您可以选择您喜欢的方式:

bc << EOF
$num1 + $num2 + $num3
EOF
Run Code Online (Sandbox Code Playgroud)

或者

bc <<< "$num1 + $num2 + $num3"
Run Code Online (Sandbox Code Playgroud)

还有其他很酷的方法可以做到这一点...但是如果您发送更多详细信息,例如如果您也执行除法,则需要添加bc -l参数来加载数学库。