shell 包含三个命令:bc、expr、let可用于数值计算。
输入:整数,let和expr都无法进行浮点运算,但是bc和awk可以。
输出:bc、expr可直接显示计算结果;let则丢弃计算结果,可通过传递结果到变量,取变量值获得计算结果。
格式示例:
bc
[root@localhost ~]# echo 300 + 5 |bc
305
[root@localhost ~]# echo 300 - 5 |bc
295
[root@localhost ~]# echo 300 /* 5 |bc
1500
[root@localhost ~]# echo 300 / 5 |bc
60
--------------------------------------------------------
expr
[root@localhost ~]# expr 300 + 5
305
[root@localhost ~]# expr 300 - 5
295
[root@localhost ~]# expr 300 /* 5
1500
[root@localhost ~]# expr 300 / 5
60
------------------------------------------------------
let
[root@localhost ~]# let i=300+5
[root@localhost ~]# echo $i
305
[root@localhost ~]# let i=300-5
[root@localhost ~]# echo $i
295
[root@localhost ~]# let i=300/*5
[root@localhost ~]# echo $i
1500
[root@localhost ~]# let i=300/5
[root@localhost ~]# echo $i
60
-----------------------------------------------------
经测试,bc允许运算量和运算符之间无空格,let 不允许有空格,expr运算量和运算符之间必须有空格。
[root@localhost ~]# let i = 5 + 3
-bash: let: =: syntax error: operand expected (error token is "=")
[root@localhost ~]# echo 300+5 |bc
305
[root@localhost ~]# expr 300+5
300+5
参考:
let的使用 http://www.cublog.cn/u/3374/showart_225918.html
expr字符处理 http://bkeep.blog.163.com/blog/static/123414290201054111712718/
expr乘法运算符 http://blog.163.com/lgh_2002/blog/static/44017526200911804630930/
shell数值运算多种方法 http://jidiblog.blog.51cto.com/140821/282481