Shell 脚本中,我们可以使用几种方式来实现算数运算。
expr
expr 本身是一个算数运算命令,Shell 可以直接拿到它的执行结果
1 | $ echo `expr 1 + 2` |
expr 有很多缺点,比如:只能运算整数、数字和符号之间必须都有空格、*
号需要转义、无法使用次方运算
1 | $ expr 1+2 |
小括号
下面我们来看 shell 本身的计算方式,第一个是小括号,这种方式需要把运算表达式用两层小括号包裹起来
1 | $ echo $((1+2)) |
通过例子可以看到,这种方式比 expr
写起来更好更舒服,就是在计算浮点数字时会有精度损失。
中括号
中括号的方式必须加上 $
前缀,并不支持像小括号一样,在括号内赋值,其他与小括号无异。
1 | $ echo $[1 + 2] |
let
let 用来指示运算表达式,也可以达到效果,但是同样的有很多缺点,比如运算符和数字不能有空格、不支持次方运算、浮点运算会忽略小数点部分、*
需要转义
1 | > $ let i = 1 + 2 |
经过对比可以发现,小括号和中括号的方式最好,两者只是书写存在细微差异,其他两个不建议使用。