格式
格式一:
格式二:
1
| [ expression ] //⚠️ 注意左方括号后及右方括号前有一个[空格]
|
说明
test是linux系统内置(builtin)的命令,用于评估表达式(expression)参数(parameter),
表达式expression的参数值(argument)包括:
文件测试参数,字符串测试参数,数字测试参数,参数组合运算符,退出状态码参数
多个测试语句之间可以使用逻辑运算符(!, &&, ||)连接, 优先级: ! > && > ||
文件测试参数
操作符 |
描述 |
-b file |
如果file是文件并且是特殊块文件,则返回true |
-c file |
如果file是字符文件,则返回true |
-d file |
如果file存在且是目录,则返回true |
-a/-e file |
如果file存在,则返回true |
-f file |
如果file存在且是常规文件,则返回true |
-g file |
如果file的GroupId已设置,则返回true |
-h/-L file |
如果file是一个符号链接,则返回true |
-k file |
如果file文件存在且粘滞位已设置,则返回true |
-p file |
如果file是命名管道(FIFO),则返回true |
-r file |
如果file文件存在且可读,则返回true |
-s file |
如果file文件大小不为零,则返回true |
-t file |
如果file已打开并与终端关联,则返回true |
-u file |
如果file的UserId已设置,则返回true |
-w file |
如果file文件存在且可写,则返回true |
-x file |
如果file文件存在且可执行,则返回true |
file1 -ot file2 |
如果file1比file2旧,则返回true |
file1 -nt file2 |
如果file1比file2新,则返回true |
file1 -ef file2 |
如果file1是file2的符号链接或硬链接,则返回true |
字符串测试参数
操作符 |
描述 |
-n string |
如果字符串长度非零,则返回true |
-z string |
如果字符长度为零,则返回true |
string1 = string2 |
如果两个字符相同,则返回true |
string1 != string2 |
如果两个字符不相同,则返回true |
string |
如果字符非空,则返回true |
数值比较测试参数
操作符 |
描述 |
num1 -eq num2 |
如果连个数值相等,则返回true |
num1 -ne num2 |
如果连个数值不等,则返回true |
num1 -gt num2 |
如果num1大于num2,则返回true |
num1 -ge num2 |
如果num1大于或等于num2,则返回true |
num1 -lt num2 |
如果num1小于num2,则返回true |
num1 -le num2 |
如果num1小于或等于num2,则返回true |
组合运算符参数(用于单个或多个测试)
操作符 |
描述 |
!expression |
一元否定运算符 |
expression1 -a expression2 |
二元与运算符 |
expression1 -o expression2 |
二元或运算符 |
\ (Expression\) |
必须使用反斜杠转义分组括号 |
例1:
1 2 3 4
| if test ! -s "$1" then echo $1 does not exist or is empty. fi
|
例2:
1 2 3 4
| if [ $# -lt 2 -o ! -e "$1" ] then exit fi
|
退出码参数
操作符 |
描述 |
0 |
返回true |
1 |
返回false |
>1 |
发生错误 |