4.6.2 算术运算符
算术运算符指的是可以在程序中实现加、减、乘、除等数学运算的运算符。shell中常用的数学运算符如下所示。
+:对两个变量做加法。
-:对两个变量做减法。
*:对两个变量做乘法。
/:对两个变量做除法。
**:对两个变量做幂运算。
%:取模运算,第一个变量除以第二个变量求余数。
+=:加等于,在自身基础上加第二个变量。
-=:减等于,在第一个变量的基础上减去第二个变量。
*=:乘等于,在第一个变量的基础上乘以第二个变量。
/=:除等于,在第一个变量的基础上除以第二个变量。
%=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。
在使用这些运算符时,需要注意到运算顺序的问题。例如输入下面的命令,输出1+2的结果。
- echo 1+2
shell并没有输出结果3,而是输出了1+2。在shell中有3种方法可以更改运算顺序。
用expr改变运算顺序。可以用echo `expr 1 + 2`来输出1+2的结果,用expr表示后面的表达式为一个数学运算。需要注意的是,`并不是一个单引号,而是"Tab"键上面的那个符号。
用let指示数学运算。可以先将运算的结果赋值给变量b,运算命令是let b=1+2。然后用echo $b来输出b的值。如果没有let,则会输出1+2。
注意:在"let b=1+2"中,加号的前后不能有空格。在`expr 1 + 2`表达式中,加号前后都需要有空格。
用$[]表示数学运算。将一个数学运算写到$[]符号的中括号中,中括号中的内容将先进行数学运算。例如命令echo $[1+2],将输出结果3。
范例4-3所示是一个shell程序实例,实现数学函数S=3(xy)+4x2+5y+6的运算。在程序中以位置变量的方式输入x与y的值。程序的编写步骤如下所示。
【范例4-3】用shell脚本进行数学运算实例,实例代码如下所示。
实例代码4-3
- 01 #!/bin/bash
- 02 #4.3.sh
- 03 s=0 #定义一个求和变量,初值为0。
- 04 t=`expr $1**$2` #用expr改变运算顺序,求x的y次方。
- 05 t=$[t*3] #t乘以3。
- 06 s=$[s+t] #结果相加。
- 07 t=$[$1**2] #求x的平方。
- 08 t=$[t*4] #结果乘以4。
- 09 s=$[s+t] #结果相加。
- 10 t=`expr $2*5` #求5y的值。
- 11 s=$[s+t] #结果相加。
- 12 s=$[s+6] #结果加上6。
- 13 echo $s #输出结果。
【运行结果】在终端中,输入下面的命令为4.3.sh文件添加可执行权限。 - chmod +x 4.3.sh
输入下面的命令运行程序。在命令中需要输入两个参数。- ./4.3.sh 2 4
结果如下所示。- 90
【代码解析】
代码第04~10行代码首先调用expr指令计算表达式的值,然后使用命令替换将运算结果赋值给相应的变量。其他代码则使用方括号的方式完成表达式的计算和赋值。
程序实际完成S=3(xy)+4x2+5y+6的数学表达式运算并输出结果。