判断格式
test [选项] 文件
或
[ -e 文件 ]
注意!!!!![]内的空格不可省略,即不可以写成[-e 文件]
按照文件类型判断
测试选项 | 作用 |
---|
-b filename | 当filename 存在并且是块文件时返回真(返回0) |
-c filename | 当filename 存在并且是字符文件时返回真 |
-d pathname | 当pathname 存在并且是一个目录时返回真 |
-e pathname | 当由pathname 指定的文件或目录存在时返回真 |
-f filename | 当filename 存在时返回真 |
-g pathname | 当由pathname 指定的文件或目录存在并且设置了SGID 位时返回真 |
-h filename | 当filename 存在并且是符号链接文件时返回真 (或 -L filename) |
-k pathname | 当由pathname 指定的文件或目录存在并且设置了"粘滞"位时返回真 |
-p filename | 当filename 存在并且是命名管道时返回真 |
-r pathname | 当由pathname 指定的文件或目录存在并且可读时返回真 |
-s filename | 当filename 存在并且文件大小大于0 时返回真 |
-S filename | 当filename 存在并且是socket 时返回真 |
-t fd | 当fd 是与终端设备相关联的文件描述符时返回真 |
-u pathname | 当由pathname 指定的文件或目录存在并且设置了SUID 位时返回真 |
-w pathname | 当由pathname 指定的文件或目录存在并且可写时返回真 |
-x pathname | 当由pathname 指定的文件或目录存在并且可执行时返回真 |
-O pathname | 当由pathname 存在并且被当前进程的有效用户id 的用户拥有时返回真(字母O 大写) |
-G pathname | 当由pathname 存在并且属于当前进程的有效用户id 的用户的用户组时返回真 |
判断文件权限
测试选项 | 作用 |
---|
-r filename | 判断文件是否存在,并且是否拥有读权限 |
-w filename | 判断文件是否存在,并且是否拥有写权限 |
-x filename | 判断文件是否存在,并且是否拥有执行权限 |
-u filename | 判断文件是否存在,并且是否拥有SUID权限 |
-g filename | 判断文件是否存在,并且是否拥有SGID权限 |
-k filename | 判断文件是否存在,并且是否拥有SBit权限 |
文件间比较
测试选项 | 作用 |
---|
文件1 -nt 文件2 | 判断文件1的修改时间是否比文件2的新(新为真) |
文件1 -ot 文件2 | 判断文件1的修改时间是否比文件2的旧(旧为真) |
文件1 -ef 文件2 | 判断文件1与文件2的Inode是否一致。(可用于判断硬链接) |
整数比较
测试选项 | 作用 |
---|
整数1 -eq 整数2 | 判断是否相等 |
整数1 -ne 整数2 | 判断是否不等(不等为真) |
整数1 -gt 整数2 | 判断整数1是否大于整数2 |
整数1 -lt 整数2 | 判断整数1是否小于整数2 |
整数1 -ge 整数2 | 判断整数是否大于等于整数2 |
整数1 -le 整数2 | 判断整数1是否小于等于整数2 |
字符串判断
测试选项 | 作用 |
---|
-z 字符串 | 判断是否为空(空为真) |
-n 字符串 | 判断是否非空(非空为真) |
字符串1 == 字符串2 | 判断字符串1是否等于字符串2 |
字符串1 != 字符串2 | 判断字符串是否不等 |
例:
[ $aa == $bb ] && echo yes || echo no
判断两个变量值是否相等,等于输出yes,不等于输出no
多重条件判断
测试选项 | 作用 |
---|
判断1 -a 判断2 | 逻辑与 |
判断1 -o 判断2 | 逻辑或 |
!判断 | 逻辑非 |