表达式的类别:
-
文件表达式
-
数值表达式
-
字符串表达式
数值表达式:
-gt:是否大于; 大于,全拼为greate than
-ge:是否大于等于; 大于等于,全拼为greater equal
-eq:是否等于; 相等,全拼为equal
-ne:是否不等于; 不相等,全拼为not equal
-lt:是否小于; 小于,全拼为less than
-le:是否小于等于; 小于等于,全拼为less equal
字符串表达式:
==:是否等于;
>:是否大于;
<:是否小于;
!=:是否不等于;
=~:左侧字符串是否能够被右侧的PATTERN所匹配;
Note:此表达式一般用于` `中;
-z "STRING":测试字符串是否为空,空则为真,不空则为假;
-n "STRING":测试字符串是否不空,不空则为真,空则为假;
Note:用于字符串比较时乃至的操作数都应该使用引导
示例:
[root@C7-1 ~]# name=obama [root@C7-1 ~]# [ -z "$name" ] [root@C7-1 ~]# echo $? 1 |
存在性测试
-a FILE:这个很少用,一般用-e
-e FILE:文件存在测试,存在为真。
存在性及类别测试
-b FILE:是否存在且为块设备文件;
-c FILE:是否存在且为字符设备文件;
-f FILE:是否存在且为普通文件,存在为真,否则为假
-d FILE:是否存在且为目录文件;
-h FILE或 -L FILE:存在且为符号链接文件;
-p FILE:是否存在且为命令管道文件;
-S FILE:是否存在且为套接字文件;
文件权限测试:
-r FILE:是否存在且可读
-w FILE:是否存在且可写
-x FILE:是否存在且可执行
文件特殊权限测试:
-g FILE:是否存在且拥有sgid权限;
-u FILE:是否存在且拥有suid权限
-k FILE:是否存在且拥有stick权限
文件大小测试:
-s FILE:是否存在且非空;
文件是否打开:
-t fd:fd表示文件描述符是否已打开且与某终端相关
-N FILE:文件自动上一次被读取之后是否被修改过;
-O FILE:当前有效用户是否为文件的属主;
-G FILE:当前有效用户是否为文件的属组;
双目测试:
FILE1 -ef FILE2:FILE1与FILE2是否指向同一个设备上的相同inode
FILE1 -nt FILE2:FILE1是否新于FILE2;
FILE1 -ot FILE2:FILE1是否旧于FILE2;
组合测试条件:
引用: Linux Shell脚本攻略 字符串比较 使用字符串比较时,最好用双中括号,因为有时候采用单个中括号会产生错误,所以最好避开它们。 可以用下面的方法检查两个字符串,看看它们是否相同。
也可以检查两个字符串是否不同。
我们还可以检查字符串的字母序情况,具体如下所示。
|
逻辑运算:
第一种方式:
COMMAND1 && COMMAND2 注:先执行COMMAND1,只有在COMMAND1执行成功时,COMMAND2才能够执行
COMMAND1 || COMMAND2 注:先执行COMMAND1,只有在COMMAND1执行失败时,COMMAND2才能够执行
! COMMAND
[ -e FILE ] && [ -r FILE ] 存在且可读
第二种方式:
EXPRESSION1 -a EXPRESSION2
EXPRESSION1 -o EXPRESSION2
示例
[zdw@c7 ~]$ [ ! \( -r /tmp/file100.sh -o -w /tmp/file100.sh \) ]
[zdw@c7 ~]$ echo $?
0
d