一、文件类型判断

选项 作用
-b 判断文件是否存在,且是否为块设备文件(是块设备文件则为真)
-c 判断文件是否存在,且是否为字符设备文件(是字符设备文件则为真)
-d 判断文件是否存在,且是否为目录文件(是目录文件则为真)
-e 判断文件是否存在(存在则为真)
-f 判断文件是否存在,且是否为普通文件(是普通文件则为真)
-L 判断文件是否存在,且是否为符号链接文件(是符号链接文件则为真)
-p 判断文件是否存在,且是否为管道文件(是管道文件则为真)
-s 判断文件是否存在,且是否为非空(非空则为真)
-S 判断文件是否存在,且是否为套接字文件(是套接字文件则为真)

名词解释

  • b:block(块设备)

  • c:charactor(字符)

  • d:directory(目录)

  • e:exit(存在)

  • f:file(文件)

  • L:link(链接)

  • p:pipeline(管道)

  • S:SOCKET(套接字)

二、文件权限判断

选 项 作用
-r 判断文件是否存在,且是否拥有读权限(有读权限则为真)
-w 判断文件是否存在,且是否拥有写权限(有写权限则为真)
-x 判断文件是否存在,且是否拥有执行权限(有执行权限则为真)
-u 判断文件是否存在,且是否拥有SUID权限(有SUID权限则为真)
-g 判断文件是否存在,且是否拥有SGID权限(有SGID权限则为真)
-k 判断文件是否存在,且是否拥有SBit权限(有SBit权限则为真)

三、整数比较

选 项 作用
a -eq b 判断两整数是否相等,相等则为真
a -ne b 判断两整数是否不相等,不相等则为真
a -gt b 判断整数a是否大于b,大于则为真
a -lt b 判断整数a是否小于b,小于则为真
a -ge b 判断整数a是否大于等于b,大于等于则为真
a -le b 判断整数a是否小于等于b,小于等于则为真

Example

1
[ 99 -eq 20 ] && echo yes || echo no

四、字符串判断

选 项 作用
-z 字符串 判断字符串是否为空(为空则为真)
-n 字符串 判断字符串是否为非空(为非空则为真)
字符串1 == 字符串2 判断两字符串是否相等(相等则为真)
字符串1 != 字符串2 判断两字符串是否不相等(不相等则为真)

五、两文件之间比较

选 项 作用
文件1 -nt 文件2 判断文件1的修改时间是否比文件2的新,新则为真
文件1 -ot 文件2 判断文件1的修改时间是否比文件2的旧,旧则为真
文件1 -ef 文件2 判断两文件的Inode是否一致,也就是是否为同一文件,相同则为真

六、多重条件判断

选 项 作用
判断1 -a 判断2 逻辑与,判断1 和 判断2 都成立,则为真
判断1 -o 判断2 逻辑或,判断1 和 判断2 只要有一个成立,就为真
!判断 逻辑非,取反

Example

1
[ -n "11" -a "11" -gt "22" ] && echo yes || echo no