文件测试
| 参数 | 说明 |
|---|
[ -a FILE ] | 如果 FILE 存在则为真 |
[ -b FILE ] | 如果 FILE 存在且是一个块特殊文件则为真 |
[ -c FILE ] | 如果 FILE 存在且是一个字特殊文件则为真 |
[ -d FILE ] | 如果 FILE 存在且是一个目录则为真 |
[ -e FILE ] | 如果 FILE 存在则为真 |
[ -f FILE ] | 如果 FILE 存在且是一个普通文件则为真 |
[ -g FILE ] | 如果 FILE 存在且已经设置了 SGID 则为真 |
[ -h FILE ] | 如果 FILE 存在且是一个符号连接则为真 |
[ -k FILE ] | 如果 FILE 存在且已经设置了粘制位则为真 |
[ -p FILE ] | 如果 FILE 存在且是一个命名管道则为真 |
[ -r FILE ] | 如果 FILE 存在且是可读的则为真 |
[ -s FILE ] | 如果 FILE 存在且大小不为 0 则为真 |
[ -t FD ] | 如果文件描述符 FD 打开且指向一个终端则为真 |
[ -u FILE ] | 如果 FILE 存在且设置了 SUID 则为真 |
[ -w FILE ] | 如果 FILE 存在且是可写的则为真 |
[ -x FILE ] | 如果 FILE 存在且是可执行的则为真 |
[ -O FILE ] | 如果 FILE 存在且属有效用户 ID 则为真 |
[ -G FILE ] | 如果 FILE 存在且属有效用户组则为真 |
[ -L FILE ] | 如果 FILE 存在且是一个符号连接则为真 |
[ -N FILE ] | 如果 FILE 存在且自上次读取后被修改过则为真 |
[ -S FILE ] | 如果 FILE 存在且是一个套接字则为真 |
[ FILE1 -nt FILE2 ] | 如果 FILE1 比 FILE2 新,或 FILE1 存在而 FILE2 不存在则为真 |
[ FILE1 -ot FILE2 ] | 如果 FILE1 比 FILE2 旧,或 FILE2 存在而 FILE1 不存在则为真 |
[ FILE1 -ef FILE2 ] | 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真 |
Shell 选项测试
| 参数 | 说明 |
|---|
[ -o OPTIONNAME ] | 如果 shell 选项 OPTIONNAME 开启则为真 |
字符串测试
| 参数 | 说明 |
|---|
[ -z STRING ] | 如果 STRING 长度为零则为真 |
[ -n STRING ] 或 [ STRING ] | 如果 STRING 长度非零则为真 |
[ STRING1 == STRING2 ] | 如果两个字符串相同则为真(严格 POSIX 可用 = 代替 ==) |
[ STRING1 != STRING2 ] | 如果两个字符串不相等则为真 |
[ STRING1 < STRING2 ] | 如果 STRING1 在当前 locale 下字典序小于 STRING2 则为真 |
[ STRING1 > STRING2 ] | 如果 STRING1 在当前 locale 下字典序大于 STRING2 则为真 |
数值比较
[ ARG1 OP ARG2 ],其中 ARG1 和 ARG2 为整数,OP 为以下之一:
| OP | 说明 |
|---|
-eq | 等于 |
-ne | 不等于 |
-lt | 小于 |
-le | 小于或等于 |
-gt | 大于 |
-ge | 大于或等于 |