判断文件是否存在,且是指定类型:
-b 块设备文件block
-c 字符设备文件character
-d 目录directory
-e 文件是否存在,exist
-f 普通文件file
-L 符号链接link
-p 管道文件pipe
-s 文件是否非空
-S 套接字文件socket
判断文件是否存在,且是指定权限:
-r 不分所有者所属组其他人,只有一个有就为真
-w 不分所有者所属组其他人,只有一个有就为真
-x 不分所有者所属组其他人,只有一个有就为真
-u SUID
-g SGID
-k SBit
两个文件比较:
文件1 -nt 文件2 判断文件1是否比文件2新(修改时间),new than
文件1 -ot 文件2 判断文件1是否比文件2旧(修改时间),old than
文件1 -ef 文件2 判断文件1是否和文件2具体相同inode,即判断两个文件是否为同一个文件,即判断两个文件是否为硬链接,equal file,同命令ll -i查看两个文件的i节点号是否相等。
两个数值比较:
整数1 -eq 整数2 判断相等equal
整数1 -nq 整数2 判断不相等not equal
整数1 -lt 整数2 判断小于less than
整数1 -gt 整数2 判断大于greater than
整数1 -le 整数2 判断小于等于less or equal
整数1 -ge 整数2 判断大于等于greater or equal
字符串判断:
-z 空为真
-n 非空为真
字符串1==字符串2 等为真
字符串1!=字符串2 不等为真
多条件判断:
判断1 -a 判断2 都为真才为真,and
判断1 -o 判断2 有一个为真就为真,or
!判断 取反,真为假
[root@localhost ~]# test -e testfile 注释:两种语法格式,test和[] [root@localhost ~]# echo $? 0 [root@localhost ~]# test -e a [root@localhost ~]# echo $? 1 [root@localhost ~]# [ -e testfile ] 注释:shell脚本中此语法格式使用更普遍 [root@localhost ~]# echo $? 0 [root@localhost ~]# [ -e test ] [root@localhost ~]# echo $? 1