| 按照文件类型进行判断 | ||
|---|---|---|
| 判断符 | 说明 | 备注 |
| -b | 判断文件是否存在,且是否为块设备文件 | |
| -c | 判断文件是否存在,且是否为字符设备块文件 | |
| -d | 判断文件是否存在,且是否为目录文件 | |
| -e | 判断文件是否存在,存在为真 | |
| -f | 判断文件是否存在,且是否为普通文件 | |
| -L | 判断文件是否存在,且是否为软连接文件 | |
| -p | 判断文件是否存在,且是否为管道文件 | |
| -s | 判断文件是否存在,且是否为非空 | |
| -S | 判断文件是否存在,且是否为套接字文件 | |
| 按照文件类型进行判断 | ||
|---|---|---|
| -r | 判断文件是否存在,且有 r 权限 | |
| -w | 判断文件是否存在,且有 w 权限 | |
| -x | 判断文件是否存在,且有 x 权限 | |
| -u | 判断文件是否存在,且有 SUID 权限 | |
| -g | 判断文件是否存在,且有 SGID 权限 | |
| -k | 判断文件是否存在,且有 SBIT 权限 | |
| 两个文件之间进行比较 | ||
|---|---|---|
| a -nt b | 判断 a 文件的修改是否比 b 文件新 | |
| a -ot b | 判断 a 文件的修改是否比 b 文件旧 | |
| a -ef b | 判断 a 文件和 b 文件的 Inode 号是否一样 | |
| 字符串的判断 | ||
|---|---|---|
| -z | 判断字符串(变量)是否为空 | |
| -n | 判断字符串(变量)是否为非空 | |
| a == b | 判断字符串 a 和 b 是否相等 | |
| a != b | 判断字符串 a 和 b 是否不相等相等,[ "$a" = "$b" ] | |
| a < b | 符号两侧空格可有可无,[[ "$a" < "$b" ]] | |
| a<=b | 符号两侧不能有空格,[[ "$a"<="$b" ]] | |
| a =~ b | 符号两侧必须有空格,[[ "$a" =~ "$b" ]],a 包含于 b | |
| 两个整数之间进行比较 | ||
|---|---|---|
| [ a -eq b ] | a=b | |
| [ a -ne b ] | a!=b | |
| [ a -gt b ] | a>b | |
| [ a -lt b ] | a<b | |
| [ a -ge b ] | a>=b | |
| [ a -le b ] | a<=b | |
| 多重条件判断 | ||
|---|---|---|
| 判断 1 -a 判断 2 | 逻辑与,判断 1 和判断 2,都成立为真 | |
| 判断 1 -o 判断 2 | 逻辑或,判断 1 和判断 2,有一个成立为真 | |
| ! 判断 | 逻辑非,取反原判断式, [ ! 2 -eq 3 ] | |