文本内容:
中的数值运算shell数学运算对于任何一个编程语言或者脚本语言都是比不可少的,也不例外,简单的shell比较运算可以用或者口,然而仅有这些是远远不够的,他只能完成逻辑判断,严格的说不test算是数值运算,中的变量没有如语言中字符型、整型、浮点型的区分,默认将变量赋值shell c当做字符,[root@bogon cat exM八in/bashuarl=3varZ=4echo M$uarl+$uarZM[rootPbogon shex3*4怎样才能让将变量赋值当做数值型呢,答案是用$和口,口包含的数学算式可以被正shell shell确识别Lrootlbogon J#catexM八in/bash uarl=3uarZ=4var3=$[$varl+$varZ]echo$uar3”CrootPbogon shex7这样是不是实现我们想要的结果了呢,其实中还提供了一个数学运算的命令shell exprevaluate他可以进行加减乘除还有比较运算,不过很可惜的是不支持浮点型运算还有一expression,个缺陷就是命令中的运算符可能会有其他含义如*,必须要使用反斜杠进行转义,这让人expr很不爽不过不用担心,有问题就会有聪明的人来解决的,一个功能强大的计算器可以供我们在中使用,这就是可以查看手册来了解关于它的详细用法这里仅介绍一下shell bcoman be在中的调用是一个外部命令,要在使用的话我们要使用反引号以把结果赋给变shell beshell量[Qoot@bogon cat test#/b in/bash;uarl=echo Mscale=
43.14*5°I beecho$var1[rootPbogon~]#sh test
15.70看一下它是如何工作的,首先我们要把数学表达式传递给很简单我们通过管道完成你也be,看到了表达式里面不只有表达式还有个它使用来设置小数位数,不过为什么跟运算结果scale,不符呢,如上所示,应该有四位小数,有待解决转向正题,有了以后,变得方便了很be多可是还是有些不太令人满意的地方,对于每一个运算表达式都要通过管道传参的方式似乎有些繁琐,我们可以使用内置重定向的方法,内置重定向允许从命令行直接重定向数据,在shell脚本中,使用如下方式varible=bc EOFoptionsstatementsexpressionsEOF用来表明数据的开始和结束,需要注意的是同样需要使用反引号将结果赋给变量EOF中可以使用内部变量和中的变量,内部变量只在内部有效不能用expressions beshell bebe于脚本中运算表达式中引用变量需加$引用符,内部变量不加$,shell shellbe[rootPbogon~]#cattestit八in/bashuar1=
3.ZvarZ=
5.4uar3=Z.ZZvar4=bcEOF seale=l innervar=
3.33resu=$uarl+$uarZ-inneruar resu%echo$uar4[rootPbogon shtest
5.Z7的功能远不止以上所述,详细用法请参考手册be man。