话不多说,开整!
1、算数运算符
设:x=10,y=20
运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | `expr $x + $y` 结果为 30 |
- | 减法 | `expr $y - $x` 结果为 10 |
* | 加法 | `expr $x * $y` 结果为 200 |
/ | 除法 | `expr $y / $x` 结果为 2 |
% | 取余 | `expr $y % $x` 结果为 0 |
- | 减法 | `expr $y - $x` 结果为 10 |
= | 赋值 | z=$x 结果为 z=10 |
== | 相等,用于比较两个数字,相同则返回 true | [ $x == $y ] 返回 false |
!= | 不相等,用于比较两个数字,不相同则返回 true | [ $x != $y ] 返回 true |
2、数值关系运算符
设:x=10,y=20
运算符 | 说明 | 举例 |
---|---|---|
-eq | equal,相等返回 true | [ $x -eq $y ] 返回 false |
-ne | not equal,不相等返回 true | [ $x -ne $y ] 返回 true |
-gt | greater then,左边大于右边则返回true | [ $x -gt $y ] 返回 false |
-lt | less then,左边小于右边则返回true | [ $x -lt $y ] 返回 true |
-ge | greater then or equal,左边大于或等于右边则返回true | [ $x -ge $y ] 返回 false |
-le | less then or equal,左边小于或等于右边则返回true | [ $x -le $y ] 返回 true |
3、布尔运算符
设:x=10,y=20
运算符 | 说明 | 举例 |
---|---|---|
! | 非运算,表达式为 true 则返回 false,否则返回 true | [ ! false ] 返回 true |
-o | or,或运算,有一个表达式为 true 则返回 true | [ $x -lt 20 -o $y -gt 30 ] 返回 true |
-a | and,与运算,两个表达式都为 true 才返回 true | [ $x -lt 20 -o $y -gt 30 ] 返回 true |
4、逻辑运算符
设:x=10,y=20
运算符 | 说明 | 举例 |
---|---|---|
|| | or,或运算,有一个表达式为 true 则返回 true | [ $x -lt 20 -o $y -gt 30 ] 返回 true |
&& | and,与运算,两个表达式都为 true 才返回 true | [ $x -lt 20 -o $y -gt 30 ] 返回 true |
5、字符串运算符
两个变量:a=qwer b=df
运算符 | 说明 | 举例 |
---|---|---|
== | 两个字符串是否相等,相等返回 true | [ $a == $b ] 返回 false |
!= | 两个字符串是否不相等,不相等返回 true | [ $a != $b ] 返回 true |
-z | 字符串长度是否为0,为0返回 true | [ -z $a ] 返回 false |
-n | 字符串长度是否不为 0,不为 0 返回 true | [ -z $a ] 返回 true |
$ | 字符串是否为空,不为空返回 true | [ $a ] 返回 true |
6、文件测试运算符
重点来了!!!!
运算符 | 说明 |
---|---|
-b | 文件是否是块设备文件,如果是,则返回 true |
-c | 文件是否是字符设备文件,如果是,则返回 true |
-d | 文件是否是目录,如果是,则返回 true |
-f | 文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true |
-g | 文件是否设置了 SGID 位,如果是,则返回 true |
-k | 文件是否设置了粘着位(Sticky Bit),如果是,则返回 true |
-p | 文件是否是有名管道,如果是,则返回 true |
-u | 文件是否设置了 SUID 位,如果是,则返回 true |
-r | 文件是否可读,如果是,则返回 true |
-w | 文件是否可写,如果是,则返回 true |
-x | 文件是否可执行,如果是,则返回 true |
-s | 文件是否为空(文件大小是否大于0),不为空返回 true |
-e | 文件(包括目录)是否存在,如果是,则返回 true |
-S | 判断某文件是否 socket |
-L | 文件是否存在并且是一个符号链接 |