表达式的类别:
文件表达式
数值表达式
字符串表达式
数值表达式:
-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脚本攻略
字符串比较
使用字符串比较时,最好用双中括号,因为有时候采用单个中括号会产生错误,所以最好避开它们。
可以用下面的方法检查两个字符串,看看它们是否相同。
[[ $str1 = $str2 ]]:当str1等于str2时,返回真。也就是说,str1和str2包含的文本是一模一样的。
[[ $str1 == $str2 ]]:这是检查字符串是否相等的另一种写法。
也可以检查两个字符串是否不同。
[[ $str1 != $str2 ]]:如果str1和str2不相同,则返回真。
我们还可以检查字符串的字母序情况,具体如下所示。
[[ $str1 > $str2 ]]:如果str1的字母序比str2大,则返回真。
[[ $str1 < $str2 ]]:如果str1的字母序比str2小,则返回真。
[[ -z $str1 ]]:如果str1包含的是空字符串,则返回真。
[[ -n $str1 ]]:如果str1包含的是非空字符串,则返回真。
逻辑运算:
第一种方式:
COMMAND1 && COMMAND2 注:先执行COMMAND1,只有在COMMAND1执行成功时,COMMAND2才能够执行
COMMAND1 || COMMAND2 注:先执行COMMAND1,只有在COMMAND1执行失败时,COMMAND2才能够执行
! COMMAND
[ -e FILE ] && [ -r FILE ] 存在且可读
第二种方式:
EXPRESSION1 -a EXPRESSION2
EXPRESSION1 -o EXPRESSION2
示例
<a href="http://s1.51cto.com/wyfs02/M00/8A/F0/wKiom1g_mImCElEpAAFRqAuQ_kI202.jpg" target="_blank"></a>
<a href="http://s5.51cto.com/wyfs02/M01/8A/F0/wKiom1g_mIqRIO_fAACEzQ30IRA972.jpg" target="_blank"></a>
<a href="http://s4.51cto.com/wyfs02/M01/8A/EB/wKioL1g_mIvQfUhFAAEYnWglBhc811.jpg" target="_blank"></a>
<a href="http://s4.51cto.com/wyfs02/M02/8A/F0/wKiom1g_mIyDtZFnAAH35LXC2PU079.jpg" target="_blank"></a>
[zdw@c7 ~]$ [ ! \( -r /tmp/file100.sh -o -w /tmp/file100.sh \) ]
[zdw@c7 ~]$ echo $?
d
本文转自cix123 51CTO博客,原文链接:http://blog.51cto.com/zhaodongwei/1878403,如需转载请自行联系原作者