1. 按照文件类型判断
-b 文件 #判断文件是否存在,并且是设备文件
-c 文件 #判断文件是否存在,并且是字符设备文件
-d 目录 #判断目录是否存在,并且是否为目录(是目录返回真)
-e 文件 #判断文件是否存在
-f 文件 #判断文件是否存在,并且是否是普通文件
-L 文件 #判断文件是否存在,并且是否为符号链接文件
-p 文件 #判断该文件是否存在,并且是否为管道文件
-s 文件 #判断文件是否存在,并且是否非空(非空为真)
-S文件 #判断文件是否存在,并且是否为套接字文件
使用方式1:
test -e a.txt;echo $? #其中test -e a.txt;是判断文件a.txt是否存在,echo $?是用来查询上一个命令的执行结果,结果为0表示执行成功否则失败。
使用方法2:
[ -e a.txt ];echo $? #注意:[]里边的两头必须有空格
通常获取判断结果的方式为:
[ -e a.txt ] && echo "yes" || echo "no"
2. 按照问价权限进行判断
-r 文件 #判断文件是否存在,且具有读权限
-w 文件 #判断文件是否存在,且具有写权限
-x 文件 #判断文件是否存在,且有执行权限
-u 文件 #判断文件是否存在,且有SUID权限
-g 文件 #判断文件是否存在,且有SGID权限
-k 文件 #判断文件是否存在,且具有SBit权限
举例:[ -w /root/a.txt ] && echo "yes" || echo "no"
3. 两个文件之间进行比较
文件1 -nt 文件2 #判断文件1的修改时间是否是比文件2的新(如果新返回真)
文件1 -ot 文件2 #判断文件1的修改时间是否比文件2的修改时间旧(如果文件1的旧则返回真)
文件1 -ef 文件2 #判断文件1和文件2的Inode号是否一致,可以理解为两个文件是否为同一文件。每个文件都有唯一的Inode号。这个判断可以用于判断硬链接的很好方法。
4. 两个整数之间的比较
整数1 -eq 整数2 #判断整数1和整数2是否相同
整数1 -ne 整数2 #判断整数1和整数2是否不相等(不相等位置)
整数1 -gt 整数2 #判断整数1是否大于整数2
整数1 -lt 整数2 #判断整数1是否小于整数2
整数1 -ge 整数2 #判断整数1是否大于等于整数2
整数1 -le 整数2 #判断整数1是否小于等于整数2
5. 字符串的判断
-z 字符串 #判断是否为空(为空返回真) 例如:[ -z "$name" ]
-n 字符串 #判断是否串是否非空(非空返回真)
字符串1 == 字符串2 #判断字符串1是否和字符串2相等
字符串1 != 字符串2 #判断字符串1是否和字符串2不相等
6. 多重条件判断
判断1 -a 判断2 #逻辑与
判断1 -o 判断2 #逻辑或
!判断 #逻辑非