shell脚本--数值计算

Posted 寻觅beyond

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本--数值计算相关的知识,希望对你有一定的参考价值。

原生bash不支持简单的数学运算

初学的时候,可以使用$(())和expr来实现

  使用$(())来实现:

#!/bin/bash
#文件名:test.sh

echo $((1+3))

#命令行第2个参数和第3个参数求和
#此时+号两边可以不用加空格
echo $(($1+$2))
echo $(($1 + $2))

echo $(($1-$2))
echo $(($1*$2)) #此时不用对*转义
echo $(($1/$2))
echo $(($1%$2))

  执行脚本:

[email protected]:~$ ./test.sh 10 20
4
30
30
-10
200
0
10
[email protected]:~$ 

  

 使用expr实现:

#!/bin/bash
#文件名:test.sh

#expr是一个用于数值计算的命令
#此时运算符号两边必须加空格,不加空格会原样输出,不会计算
expr 1 + 3

#命令行第2个参数和第3个参数求和
expr $1 + $2
expr $1 - $2
expr $1 * $2    #失败
expr $1 \* $2   #因为乘号*在shell中有特殊的含义,所以要转义
expr $1 / $2    #除法取商
expr $1 % $2    #除法取模

  运行脚本:

[email protected]:~$ ./test.sh 10 20
4
30
-10
expr: syntax error
200
0
10
[email protected]:~$ 

  

  使用expr之前先了解一下反引号``的功能,反引号的功能是将反引号括起来的内容执行,没错,就是执行,这就意味着,反引号括起来的是一条命令,并且反引号不能单独使用,要将包含反引号及其括起来的语句赋值给一个变量,否则出错;如果不想将其赋给一个变量,就不要用反引号,直接写反引号中的内容,因为其内容就是一条命令。

#!/bin/bash
#文件名:test.sh

#此时运算符号两边必须加空格
#必须将反引号中命令的结果赋给一个变量
num=`expr 1 + 3`
echo $num

#命令行第2个参数和第3个参数求和
num=`expr $1 + $2`
echo $num

#乘法运算符仍要转义
num=`expr $1 \* $2`
echo $num

  运行脚本:

[email protected]:~$ ./test.sh 10 20
4
30
200
[email protected]:~$ 

  

以上是关于shell脚本--数值计算的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本Linux实用小代码,你值得拥有

代码片段:Shell脚本实现重复执行和多进程

用shell脚本,创建一个整数和计算器程序并打印数字脚本

shell脚本基本应用特殊的Shell变量

shell脚本计算时间

28.shell脚本计算能被3整除的余数和