SHELL TEST命令[文件判断,字符串判断,整型判断]
test命令
test命令,test命令是一个经常与if 一块使用的命令,这个test 命令执行各种各样的检查与比较。它有两种等价模式:
test expression
比较流行的格式是:
[ expression ] # 注意空格
这里的expression 是一个表达式,其执行结果是true 或者是false。当表达式为真时,这个test 命令返回一个零退出状态,当表达式为假时,test 命令退出状态为1。
文件表达式
以下表达式被用来计算文件状态:
表达式 | 如果为真 |
---|
file1 -ef file2 | file1 和file2拥有相同的索引号(通过硬链接两个文件名指向相同的文件)。 |
file1 -nt file2 | file1 新于file2。 |
-b file | file 存在并且是一个块(设备)文件。 |
-c file | file 存在并且是一个字符(设备)文件。 |
-d file | file 存在并且是一个目录。 |
-e file | file 存在。 |
-f file | file 存在并且是一个普通文件。 |
-g file | file 存在并且设置了组ID。 |
-G file | file 存在并且由有效组ID 拥有。 |
-k file | file 存在并且设置了它的“sticky bit”。 |
-L file | file 存在并且是一个符号链接。 |
-O file | file 存在并且由有效用户ID 拥有。 |
-p file | file 存在并且是一个命名管道。 |
-r file | file 存在并且可读(有效用户有可读权限)。 |
-s file | file 存在且其长度大于零。 |
-S file | file 存在且是一个网络socket。 |
-t fd | fd 是一个定向到终端/从终端定向的文件描述符。这可以被用来决定是否重定向了标准输入/输出错误。 |
-u file | file 存在并且设置了setuid 位。 |
-w file | file 存在并且可写(有效用户拥有可写权限)。 |
-x file | file 存在并且可执行(有效用户有执行/搜索权限)。 |
字符串表达式
表达式 | 如果为真 |
---|
string | string 不为null。 |
-n string | 字符串string 的长度大于零。 |
-z string | 字符串string 的长度为零。 |
string1 = string2string1 == string2 | string1 和string2 相同.单或双等号都可以,不过双等号更受欢迎。 |
string1 != string2 | string1 和string2 不相同。 |
string1 > string2 | sting1 排列在string2 之后。 |
string1 < string2 | string1 排列在string2 之前。 |
整型表达式
表达式 | 如果为真 |
---|
integer1 -eq integer2 | integer1 等于integer2. |
integer1 -ne integer2 | integer1 不等于integer2. |
integer1 -le integer2 | integer1 小于或等于integer2. |
integer1 -lt integer2 | integer1 小于integer2. |
integer1 -ge integer2 | integer1 大于或等于integer2. |
integer1 -gt integer2 | integer1 大于integer2. |