Shell运算符:
算数运算符
关系运算符
布尔运算符
字符串运算符
文本测试运算符
算数运算符
原生bash不支持简单的数学运算符,但是可以通过其它命令来实现。例如:awk 和 expr,其中expr最常用
运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | `expr $a + $b` 结果为 30。 |
- | 减法 | `expr $a - $b` 结果为 -10。 |
* | 乘法 | `expr $a \* $b` 结果为 200。 |
/ | 除法 | `expr $b / $a` 结果为 2。 |
% | 取余 | `expr $b % $a` 结果为 0。 |
= | 赋值 | a=$b 将把变量 b 的值赋给 a。 |
== | 相等。用于比较两个数字,相同则返回 true。 | [ $a == $b ] 返回 false。 |
!= | 不相等。用于比较两个数字,不相同则返回 true。 |
|
#!/bin/bash #简单算数运算符 a=100 b=10 echo "a = $a , b = $b" c=`expr $a + $b` echo "a + b is value :$c" c=`expr $a - $b` echo "a -b is value : $c" c=`expr $a \* $b` echo "a * b is value : $c" c=`expr $a / $b` echo "a / b is value :$c" c=`expr $a % $b` echo "a % b is value: $c" if [ $a == $b ] then echo "a == b : true" else echo "a == b : false" fi if [ $a != $b ] then echo "a != b :true" else echo "a != b : false" fi
输出结果: a = 100 , b = 10 a + b is value :110 a -b is value : 90 a * b is value : 1000 a / b is value :10 a % b is value: 0 a == b : false a != b :true
关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 举例 |
---|---|---|
-eq | 检测两个数是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 |
-ne | 检测两个数是否不相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 | [ $a -gt $b ] 返回 false。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 | [ $a -lt $b ] 返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 | [ $a -ge $b ] 返回 false。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 | [ $a -le $b ] 返回 true。 |
#!/bin/bash #关系运算符 a=10 b=20 echo "-eq ,检测两个数是否相等" if [ $a -eq $b ] then echo "a 等于 b" else echo a 不等于 b fi echo "-ne 检测两个数是否不相等" if [ $a -ne $b ] then echo a不等于b fi echo "-gt 检测左边是否大于右边" if [ $a -gt $b ] then echo a大于b,-gt返回ture fi echo "-lt检测左边是否小于右边" if [ $a -lt $b ] then echo a小于b,-lt返回true fi echo -ge 左边大于等于右边 if [ $a -ge $b ] then echo a大于等于b fi echo -le 左边小于等于右边 if [ $a -le $b ] then echo "a 小于等于 b" fi
输出: -eq ,检测两个数是否相等 a 不等于 b -ne 检测两个数是否不相等 a不等于b -gt 检测左边是否大于右边 -lt检测左边是否小于右边 a小于b,-lt返回true -ge 左边大于等于右边 -le 左边小于等于右边 a 小于等于 b