Bash shell脚本+;数字和

Bash shell脚本+;数字和,bash,ksh,Bash,Ksh,用ksh或bash计算数字的最佳简单优雅方法是什么 我的示例是关于let命令的,但我想找到更好的方法来汇总所有数字 比如说 num1=1232 num2=24 num3=444 . . . let SUM=$num1+num2+num3......... 那么: num1=1232 num2=24 num3=444 sum=$((num1+num2+num3)) echo $sum # prints 1700 您可以使用$(())语法,但如果您有十进制数,请使用awk或bc/dc“便携

用ksh或bash计算数字的最佳简单优雅方法是什么 我的示例是关于let命令的,但我想找到更好的方法来汇总所有数字

比如说

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

let SUM=$num1+num2+num3.........
那么:

num1=1232
num2=24 
num3=444
sum=$((num1+num2+num3))
echo $sum # prints 1700

您可以使用
$(())
语法,但如果您有十进制数,请使用awk或bc/dc“便携”进行计算。

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

jyzuz@dev:/tmp> echo $(( 017 + 2 ))
17
jyzuz@dev:/tmp> echo $(( 17 + 2 ))
19
jyzuz@dev:/tmp>
似乎在第一种情况下,它理解为二进制或十六进制数。。不太确定

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

bc << EOF
$num1 + $num2 + $num3
EOF

bc如果将双括号一直移到外侧,则可以消除最后一个美元符号,并自由分隔操作数和运算符(包括变量和赋值运算符),以确保可读性

num1=1232
num2=24 
num3=444
(( sum = num1 + num2 + num3 ))

(( count++ ))

(( sum += quantity ))
除非您使用
let
或外部
(())
表单(或者您正在增加变量或在右侧进行赋值),否则不能使用增量样式运算符(
*=/=%=+=-=&=^=++-

num1=1232
num2=24 
num3=444
(( sum = num1 + num2 + num3 ))

(( count++ ))

(( sum += quantity ))