原生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))
执行脚本:
ubuntu@ubuntu:~$ ./test.sh 10 20 4 30 30 -10 200 0 10 ubuntu@ubuntu:~$
使用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 #除法取模
运行脚本:
ubuntu@ubuntu:~$ ./test.sh 10 20 4 30 -10 expr: syntax error 200 0 10 ubuntu@ubuntu:~$
使用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
运行脚本:
ubuntu@ubuntu:~$ ./test.sh 10 20 4 30 200 ubuntu@ubuntu:~$