基础整数加法(适用于Bash/Shell)
-
expr
命令
传统POSIX兼容方法,注意操作符两侧需留空格:sum=$(expr 5 + 3) # 输出8
⚠️ 限制:仅支持整数,符号需转义(如需写为
\*
) -
双括号
Bash内置算术扩展,效率更高:echo $((5 + 3)) # 直接输出8 result=$((num1 + num2))
✅ 优势:支持变量嵌套(如
$(( $a + $b ))
),无需转义符号 -
let
命令
变量赋值场景更简洁:let sum=5+3 # 变量sum赋值为8 let "sum = 5 + 3" # 引号内可加空格提升可读性
浮点数加法(需外部工具)
-
bc
计算器
高精度浮点运算首选,通过管道传递表达式:echo "5.2 + 3.7" | bc # 输出8.9 echo "scale=2; 5/3 + 1.1" | bc # scale控制小数位,输出2.77
-
awk
命令
处理文本数据时高效:awk 'BEGIN {printf "%.2f", 5.2 + 3.7}' # 输出8.90
特殊场景应用
-
变量自增
((count++)) # 等同于 count=$((count+1)) let count+=1 # 简写形式
-
数组元素求和
arr=(10 20 30) sum=$(IFS=+; echo "$((${arr[*]}))") # 输出60
-
大整数计算
超出2^63
时使用bc
:echo "10^20 + 1" | bc # 精确计算100000000000000000001
方法对比总结
方法 | 整数 | 浮点数 | 执行效率 | 适用场景 |
---|---|---|---|---|
expr |
低 | 老式脚本兼容 | ||
高 | Bash算术操作首选 | |||
bc |
中 | 高精度/浮点计算 | ||
awk |
中 | 文本数据流处理 |
常见错误规避
- 空格缺失:
expr 5+3
会报错,必须写expr 5 + 3
- 浮点运算误用:
$((5.0+3.0))
无效,应改用bc
- 变量未定义:
set -u
模式下未初始化变量会中断脚本,建议提前声明
引用说明基于 POSIX Shell标准 及 GNU Bash 5.0+ 文档验证,浮点运算方法参考 bc手册页 与 AWK编程指南,安全实践遵循 Linux Foundation 发布的 Shell脚本最佳实践。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8912.html