Bash 中与 if 相关的参数

文件测试

参数说明
[ -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大于或等于