什么KSH或bash总结数字的最佳简单优雅的方式 我的例子是关于我们的命令,但我想找到更好的方式来总结所有号码shell脚本+数字总和
例如
num1=1232
num2=24
num3=444
.
.
.
let SUM=$num1+num2+num3.........
什么KSH或bash总结数字的最佳简单优雅的方式 我的例子是关于我们的命令,但我想找到更好的方式来总结所有号码shell脚本+数字总和
例如
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,因为我们接收数据的格式不是很“数字化”。下面的表查询:
[email protected]:/tmp> echo $((017 + 2))
17
[email protected]:/tmp> echo $((17 + 2))
19
[email protected]:/tmp>
似乎在第一种情况下,它理解为二进制或十六进制数..不太确定。
所以我改为bc。您可以选择至极的方式你喜欢:
bc << EOF
$num1 + $num2 + $num3
EOF
或
bc <<< "$num1 + $num2 + $num3"
还有其他库尔斯方式来做到这一点......但如果你发送更多的细节,比如,如果你是这将是很好执行部门也,你需要添加bc -l
参数,加载数学库。
如果将双括号移动到外部,您可以消除最后一个美元符号并自由分隔操作数和运算符(包括变量和赋值运算符)以提高可读性。
num1=1232
num2=24
num3=444
((sum = num1 + num2 + num3))
((count++))
((sum += quantity))
,除非你使用let
或外(())
形式(或你递增变量或右手边做任务)不能使用增量风格的操作(*= /= %= += -= <<= >>= &= ^= |= ++ --
)。