一、 算术运算符:
算术运算符列表 | ||
运算符 | 说明 | 举例 |
+ | 加法 | `expr $a + $b` |
- | 减法 | `expr $a - $b` |
* | 乘法 | `expr $a \* $b`。 |
/ | 除法 | `expr $b / $a` |
% | 取余 | `expr $b % $a` |
= | 赋值 | a=$b 将把变量 b 的值赋给 a。 |
二、 数值测试
运算符 | 示例 | 说明 | 备注 |
-gt | [ $a –gt $b ] | A是否大于b,如大于,返回0 | gt=greater than |
-ge | [ $a –ge $b ] | A是否大于等于b,如大于等于,返回0 | ge=greater equal |
-eq | [ $a –eq $b ] | A是否等于b,如等于,返回0 | eq=equal |
-ne | [ $a –ne $b ] | A是否不等于b,如不等于,返回0 | ne=not equal |
-lt | [ $a –lt $b ] | a是否小于b,如小于,返回0 | lt=less than |
-le | [ $a –le $b ] | a是否小于等于b,如小于等于b,返回0 | le=less equal |
三、 字符测试
运算符 | 说明 | 举例 |
== | 检测两个字符串是否相等,相等返回0。 | [ $a == $b ] |
> | 检测左边的字符串是否大于右边的字符串 | [ $a \> $b ] |
< | 检测左边的字符串是否小于右边的字符串 | [ $a \< $b ] |
!= | 检测两个字符串是否不相等,不相等则返回0 | [ $a != $b ] |
-z | 检测字符串是否为空,为空返回0 | [ -z $a ] |
-n | 检测字符串是否不空,不空返回0。 | [ -n $a ] |
=~ | 检测左边的字符串是否能被右边的模式匹配 | [ abc =~ a* ] |
注:字符串测试的表达式一 般用在[[ ]]模式下,比较大小时需转义,否则会被识别为输出重定向。
四、 文件测试
操作符 | 说明 | 示例 |
文件存在性测试 | ||
-a FILE | 检测文件是否存在(不常用) | [ -a /etc/passwd ] |
-e FILE | 检测文件是否存在 | [ -e /etc/passwd ] |
文件存在性及类别测试 | ||
-b FILE | 检测文件是否为块设备文件并存在 | [ -b /dev/sda ] |
-c FILE | 检测文件是否为字符设备文件并存在 | |
-d FILE | 检测文件是否为目录文件并存在 | |
-f FILE | 检测文件是否为普通文件并存在 | |
-h FILE或 -L FILE | 检测文件是否为符号链接文件并存在 | |
-p FILE | 检测文件是否为管道文件且存在 | |
-S FILE | 检测文件是否为套接字文件且存在 | |
文件权限存在 | ||
-r FILE | 检测文件是否为可读且存在 | |
-w FILE | 检测文件是否可写且存在 | |
-x FILE | 检测文件是否可执行且存在 | |
文件特殊权限测试 | ||
-g FILE | 测试文件是否有SGID权限且存在 | |
-u FILE | 测试文件是否有SUDI权限且存在 | |
-k FILE | 测试文件是否有sticky权限且存在 | |
文件大小测试 | ||
-s FILE | 测试文件是否为空且存在 | |
文件是否打开测试 | ||
-t fd:FILE | 测试文件描述符是否被打开且与某终端相关 | |
-N FILE | 文件自上一次被读取后是否被修改过 | |
-O FILE | 当前有效用户是否为文件属主 | |
-G FILE | 当前有效用户是否为文件属组 | |
双目测试 | ||
File1 <ef file2 | File1与file2是否指向同一设备上相同的inode | |
File1 –nt file2 | File1是否比file2的mtime新,是为真 | |
File1 –ot file2 | File1的mtime是否比file2的旧,是为真 |
五、 组合测试条件
第一种方式:
运算类型 | 说明 |
Command1 && command2 | Command1和command2同时为真则为真 |
Command1 || command2 | Command1和command2一个为真则为真 |
!command | Command取反 |
第二种方式:
Expression1 –a expression2 expression1和expression2同时为真则为真
Expression1 –o expression2 expression1和expression2一个为真则为真
!expression !expression取反
注:此方式必须使用test命令或[]进行测试