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
进行数学运算时,引用变量的$
符号不能省略,运算符和操作数之间必须加空格,且*
运算符必须要进行转义 - 使用双圆括号或单方括号进行数学运算时,引用变量的
$
符号可以省略,运算符和操作数之间的空格数量没有限制,*
运算符也不需要进行转义