Bash 数学运算

expr 函数

1a=2
2b=3
3# 不可以在等号两边加空格
4
5echo `expr $a + $b` 
6# 运算符两边必须加空格,空格数量可以为一个或多个
7
8echo `expr $a \* $b` 
9# 运算符 * 需要转义

双圆括号

 1a=2
 2b=3
 3
 4echo $(($a + $b)) 
 5# 运算符两边的空格数量没有限制
 6
 7echo $((a + b)) 
 8# $ 符号可以省略
 9
10echo $((a * b)) 
11# 运算符 * 不需要转义

方括号

 1a=2
 2b=3
 3
 4echo $[$a + $b]
 5# 运算符两边的空格数量没有限制
 6
 7echo $[a + b] 
 8# $ 符号可以省略
 9
10echo $[$a * 2] 
11# 运算符 * 不需要转义

注:

  • bash shell 数学运算只支持整数运算
  • 如果需要进行浮点运算,可以使用内建的 bash 计算器 bc

总结

  • bash 中可以通过 expr 函数、双圆括号 $(())、单方括号 $[] 进行整数的数学运算
  • 使用 expr 进行数学运算时,引用变量的 $ 符号不能省略,运算符和操作数之间必须加空格,且 * 运算符必须要进行转义
  • 使用双圆括号或单方括号进行数学运算时,引用变量的 $ 符号可以省略,运算符和操作数之间的空格数量没有限制,* 运算符也不需要进行转义