目录
一:算术运算符
1:内容
a 为 10,变量 b 为 20
运算符 | 说明 | 举例 |
+ | 加法 | `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。 | [ $a != $b ] 返回 true。 |
2:格式
bash不支持简单的数学运算,可以通过命令实现expr
格式1:
expr 值 + 值要加`然后引用变量时要用$
注意:符号两边需要加上空格
格式2:
$[值+值](给不给空格都可以)(引用数据时不用加$符)
3:例子
#!/bin/sh
a=10
b=20
c=a
d=b
d=`expr $a + $b`
echo $d
echo `expr $a - $b`
echo `expr $a \* $b`
echo `expr $a / $b`
echo `expr $a % $b`
echo `expr $a = $b`
echo `expr $a == $b`
echo `expr $a != $b`
echo `expr $c + $d`
echo `expr $c == $d`
#!/bin/sh
a=10
b=20
echo $[$a+$b]
echo $[a-b]
由此可见shell编程的算数运算符只适合数字不适合字符,只有错误是0
二:关系运算符
1:内容
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
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/sh
a=1
b=0
if [ $a -eq $b ]
then
echo "a和b相等"
else
echo "a和b不相等"
fi
三:逻辑运算符
1:内容
a 1 b 2
运算符 | 说明 | 举例 | |
&& | 逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false | |
|| | 逻辑的 OR | [[ $a -lt 100 || $b -gt 100 ]] 返回 true |
四:字符串运算符
1:内容
a 1 b 2
运算符 | 说明 | 举例 |
= | 检测两个字符串是否相等,相等返回 true。 | [ $a = $b ] 返回 false。 |
!= | 检测两个字符串是否不相等,不相等返回 true。 | [ $a != $b ] 返回 true。 |
-z | 检测字符串长度是否为0,为0返回 true。 | [ -z $a ] 返回 false。 |
-n | 检测字符串长度是否不为 0,不为 0 返回 true。 | [ -n "$a" ] 返回 true。 |
$ | 检测字符串是否为空,不为空返回 true。 | [ $a ] 返回 true。 |
五:布尔运算符
1:内容
运算符 | 说明 | 举例 |
! | 非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 |
-o | 或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
-a | 与运算,两个表达式都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |