shell执行数学运算

整数:

  • 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`

 

除此之外还有一种写法:利用内联输入重定向(<<)

猜你喜欢

转载自www.cnblogs.com/qixifly/p/12030924.html