测试文件、字符串和数值表达式等
test expression [ expression ]
test命令主要用于测试各种表达式,根据表达式的计算结果返回适当的结束状态。如果表达式的计算结果为真,返回0;如果表达式的计算结果为假,返回1。
其中,expression可以是文件类型表达式、文件访问权限表达式、文件特性表达式、字符串测试表达式、算术运算表达式,以及逻辑运算表达式等。如果未提供表达式,计算结果为假。如果表达式是单个参数,且为空,计算结果为假。否则计算结果为真。
test命令的另外一种形式是直接使用方括号。例如,“test -e /etc/shells”命令可以改写成“[ -e /etc/shells ]”。注意,方括号与表达式之间至少必须存在一个空格字符,否则会出错。
-b file 如果给定的文件存在且是块特殊文件,测试结果为真。
-c file 如果给定的文件存在且是字符特殊文件,测试结果为真。
-d file 如果给定的文件存在且是一个目录,测试结果为真。
-f file 如果给定的文件存在且是一个普通文件,测试结果为真。
-h file 如果给定的文件存在且是一个符号链接文件,测试结果为真(等同于“-L”)。
-L file 如果给定的文件存在且是一个符号链接文件,测试结果为真(等同于“-h”)。
-p file 如果给定的文件存在且是一个管道文件,测试结果为真。
-S file 如果给定的文件存在且是一个套接字,测试结果为真。
-t fd 如果给定文件描述符fd的文件已经打开且与一个终端相关联,测试结果为真。
注意,除了“-h”和“-L”测试,所有符号链接文件的测试均以符号链接文件本身为准,不涉及其引用的文件。
-g file 如果给定的文件存在且已设置了setgid标志位,测试结果为真。
-k file 如果给定的文件存在且已设置了黏性标志位,测试结果为真。
-r file 如果给定的文件存在且当前用户可读,测试结果为真。
-u file 如果给定的文件存在且已设置了setuid标志位,测试结果为真。
-w file 如果给定的文件存在且当前用户可写,测试结果为真。
-x file 如果给定的文件存在且当前用户可执行(或检索),测试结果为真。
-G file 如果给定的文件存在且归当前有效用户组ID的用户组拥有,测试结果为真。
-O file 如果给定的文件存在且归当前有效用户ID的用户拥有,测试结果为真。
-e file 如果给定的文件存在,测试结果为真。
-s file 如果给定的文件存在且其容量大于0,测试结果为真。
file1 -nt file2 如果给定文件file1的修改日期比file2新,测试结果为真。
file1 -ot file2 如果给定文件file1的修改日期比file2早,测试结果为真。
exp1 -ef file2 如果给定的文件file1与file2位于相同的设备,具有相同的信息节点号,测试结果为真。
-n str 如果给定字符串的长度大于0,测试结果为真(“-n”可以省略)。
-z str 如果给定字符串的长度为0,测试结果为真。
str1 = str2 如果给定字符串str1等同于字符串str2,测试结果为真。
str1 != str2 如果给定字符串str1不同于字符串str2,测试结果为真。
str1 < str2 如果给定字符串str1小于字符串str2,测试结果为真。
str1 > str2 如果给定字符串str1大于字符串str2,测试结果为真。
exp1 -eq exp2 如果表达式exp1等于exp2,测试结果为真。
exp1 -ge exp2 如果表达式exp1大于或等于exp2,测试结果为真。
exp1 -gt exp2 如果表达式exp1大于exp2,测试结果为真。
exp1 -le exp2 如果表达式exp1小于或等于exp2,测试结果为真。
exp1 -lt exp2 如果表达式exp1小于exp2,测试结果为真。
exp1 -ne exp2 如果表达式exp1不等于exp2,测试结果为真。
注意,在外部的test命令(/usr/bin/test)中,作为一个特殊的表达式,“-l string”可用于计算字符串的长度,因而可以出现在算数运算表达式中。但bash的内置test命令不支持。
( exp ) 如果表达式为真,最终计算结果也为真(括号前需加转义符号“\”)。
! exp 如果表达式为假,最终计算结果为真。
exp1 -a exp2 如果两个表达式均为真,最终计算结果也为真。
exp1 -o exp2 如果两个表达式之一为真,最终计算结果也为真。
1. 利用test命令测试指定的目录是否存在,如果目录不存在,利用mkdir命令创建指定的目录。
$ test ! -d somedir && mkdir tempdir $
索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z