linux shell 编程:实现运算(expr、$((...))、bc计算浮点数)

介绍

在 Shell 脚本中实现加法运算有多种方式,以下是几种常用且可靠的方法(适用于 Bash、Zsh 等主流 shell):

方法 1:使用 $(( )) 算术扩展(推荐)

优点:简洁、高效、POSIX 兼容(在大多数 shell 中可用)
注意:只支持整数运算

#!/bin/bash
a=10
b=20
sum=$((a + b))
echo "结果: $sum"

方法 2:使用 expr 命令

#!/bin/bash
a=10
b=20
sum=$(expr $a + $b)
echo "结果: $sum"

注意:

  • 运算符两边必须有空格(+ 前后要空格)
  • 变量前用 $
  • 同样只支持整数

方法 3:使用 let 命令(不推荐)

#!/bin/bash
a=10
b=20
let sum=a+b
echo "结果: $sum"

或

let "sum = a + b"

注意:let 是 Bash 内建命令,不兼容所有 POSIX shell(如 dash)

方法 4:浮点数加法(使用 bc)

Shell 原生不支持小数,需借助 bc(计算器工具):

确保系统已安装 bc:

# Ubuntu/Debian
sudo apt install bc

# CentOS/RHEL
sudo yum install bc

例子:

#!/bin/bash
a=3.14
b=2.86
sum=$(echo "$a + $b" | bc)
echo "结果: $sum"

提示:可指定精度:

sum=$(echo "scale=2; $a + $b" | bc)  # 保留2位小数

总结

场景 推荐方法
整数加法 $((a + b))
浮点数加法 `echo “$a + $b” bc`
兼容老脚本 expr $a + $b(注意空格)

推荐:优先使用 $(( )) 进行整数运算,简洁安全。


原文出处:/show_1GW2GCrHohBY.html