使用Bash实现算术运算:获取最终$sum值的优雅方法
在Bash中优雅实现算术运算获取$sum变量的几种方式
嘿,在Bash里搞定算术运算、拿到$sum的优雅方法其实不少,我给你整理几个最常用且顺手的:
1. 双括号(( ))(最推荐,简洁直观)
这是Bash原生的算术扩展语法,完全内置、运行高效,语法也够简洁,支持所有常规算术操作,还能直接做变量自增/自减这类操作。
示例:
a=12 b=8 (( sum = a + b )) echo $sum # 输出20 # 复杂运算也不在话下 (( sum = a * 2 - b / 2 )) echo $sum # 输出20
甚至可以省略变量赋值的空格,写成((sum=a+b)),一样能正常工作。
2. $(( ))直接赋值
和上面的双括号是一套体系,但更适合把运算结果直接赋值给变量的场景,一行就能搞定,可读性拉满。
示例:
# 基础求和 sum=$(( 5 + 3 * 2 )) echo $sum # 输出11(遵循常规运算优先级) # 用括号改变优先级 sum=$(( (5 + 3) * 2 )) echo $sum # 输出16
3. let命令(经典简洁写法)
let是Bash专门用于算术运算的内置命令,语法同样简洁,适合习惯这种风格的开发者。
示例:
x=9 y=3 let sum=x/y + 4 echo $sum # 输出7 # 无空格的紧凑写法也支持 let sum=x*y-2 echo $sum # 输出25
4. 浮点数运算的优雅方案
上面的方法都只支持整数运算,如果需要处理小数,推荐用bc命令,结合管道或Here文档来实现,既准确又优雅。
示例:
# 基础浮点数求和 sum=$(echo "2.5 + 4.7" | bc) echo $sum # 输出7.2 # 指定小数位数(比如保留2位) sum=$(echo "scale=2; 10 / 3" | bc) echo $sum # 输出3.33
额外小技巧:数组元素求和
如果要给数组里的所有元素求和,结合循环和双括号就能优雅实现:
numbers=(10 20 30 40) sum=0 for num in "${numbers[@]}"; do (( sum += num )) done echo $sum # 输出100
内容的提问来源于stack exchange,提问作者jango
相关产品推荐
相关产品推荐

