Shell——2
基本数据类型运算
操作符
符号 |
语义 |
描述 |
---|---|---|
+ |
加 |
10+10,结果为20 |
- |
减 |
10-3, 结果为7 |
* |
乘 |
10*2,结果为20 |
/ |
除 |
10/3, 结果为3(取整数) |
% |
求余 |
10%3, 结果为1 (取余数) |
== |
判断是否相等 |
两数相等返回1,否则0 |
!= |
判断是否不等 |
两数不等返回1,否则0 |
> |
大于 |
前者大于后者返回1,否则0 |
>= |
大于或等于 |
前者大于或等于后者返回1,否则0 |
< |
小于 |
前者小于后者返回1,否则0 |
<= |
小于或等于 |
前者小于或等于后者返回1,否则0 |
整数运算
在shell中,有两种方式能实现整数运算,一种是使用expr命令, 另外一种是通过方括号($[])来实现。下面分别来看看:
expr
#!/bin/bash #输出13 expr 10 + 3 #输出10+3 expr 10+3 #输出7 expr 10 - 3 #输出30 expr 10 \* 3 #输出3 expr 10 / 3 #输出1 expr 10 % 3 #将计算结果赋值给变量 num1=$(expr 10 % 3) #将计算结果赋值给变量 num2=`expr 10 % 3`
注意:
-
在以上的乘法(*)中,我们用了反斜线(\)来转义,不然会报错。
-
运算符前后必须还有空格,否则会被直接当作字符串返回。
-
如果要将计算结果保存到变量,就需要用到我们上篇文章讲到的那两种方式($() 或者 ``)来替换命令了。
方括号($[])
#!/bin/bash num1=10 num2=3 #输出num1 + num2=13 echo "num1 + num2=$[$num1 + $num2]" #输出num1+num2=13 echo "num1+num2=$[$num1+$num2]" #输出num1 - num2=7 echo "num1 - num2=$[$num1 - $num2]" #输出num1 * num2=30 echo "num1 * num2=$[$num1 * $num2]" #输出num1 > num2=1 echo "num1 > num2=$[$num1 > $num2]" #输出num1 < num2=0 echo "num1 < num2=$[$num1 < $num2]" #将运算结果赋值给变量,输出num3=3 num3=$[$num1 / $num2] echo "num3=$num3"
浮点运算
在shell中,做浮点运算一般是用bash的计算器(bc)。在shell脚本中,一般我们的使用方法是:
variable=$(echo "options; expression" | bc)
options是bc的一些选项,例如: 可以通过scale去设置保留的小数位数。具体有哪些参数,可以man bc进行查看
expression就是我们具体的表达式,例如 10 * 3
" | " 这个符号,对于熟悉linux系统的人来说,这个再熟悉不过了。它叫做管道, 之所以会叫做管道,其实很形象,你可以把它看作一根水管,水管一头接入前一个命令的返回结果, 一头接入下一个命令。表示将前一个命令的执行结果作为后一个命令的参数输入。以上,表示将我们的表达式作为bc的参数输入。
#!/bin/bash #表示 10/3, 保留2位小数,将结果赋值给了num, 输出3.33 num=$(echo "scale=2; 10 / 3" | bc) echo $num