整数:
- expr
- let
- (())
- []
浮点数:
- bc
1、使用expr
♦参与运算的成员和运算符之间必须有一个空格:
♦对于那些容易被shell错解的,在它们传入expr命令之前,需要使用shell的转义字符(反斜线‘’)将其转义。
♦要将一个数学式的运算结果赋给一个变量,需要使用命令替换来获取expr命令的输出:
我们写一个简单的shell 脚本如下:
看看运算结果:没有正确输出运算结果
我们修改脚本如下:
再来看运算结果:输出结果10
2、使用[]
♦在bash shell中,在将一个数学运果赋给某个变量时,可以用美元符和方括号($[ operation ])将数学表达式括起来,并且不需要转义符转义。这种方式同样适用于shell脚本。并且运算成员和运算符之前可以没有空格(expr 需要有空格)。
3、使用(())
4、使用let
bash shell数学运算只支持整数运算。要进行任何实际的数学计算,这是一个巨大的限制。
接下里我们看看怎么解决这个问题。
有几种解决方案能够客服bash中数学运的整数限制。最常的方是用内建的bash计器,叫作bc。
1. bc的基本用法
bash计算器实际上是一种编程语言,它在命令行中输入浮点表达式,然后解释并计算表达式,最后返回结果。bash计器能够识别:
数字(整数和点数)
变量(简单变量和数组)
注释(以#或C中的/* */开始的行)
表达式
编程(如if-then)
函数
可以在shell提示符下通过bc命令访问bash计器:
浮点运算是由内建变量scale控制的。必须将这个值设为你希望在计果中保留的小数位数,否则无法得到预期的结果。
scale变量的默值认是0。在scale被设置前,bash计算器的计算果不包还包含小数。在将其设成4后,bash计器显示的结果包含四位小数。-q命令行可以不显示bash计器 的欢迎信息。
除了普通数字,bash计器还能支持变量。
bc 在shell脚本中的使用:用$()或者``替换命令赋值给变量,其中options部分一般设置精度scale,和变量赋值,expression部分是计算表达式
var=$(echo "option1,option2;...; expression" | bc)
或者var=`echo "option1;option2;...;expression"|bc`
除此之外还有一种写法:利用内联输入重定向(<<)