条件测试
条件测试的语法有两种
test 条件表达式
或
[ 条件表达式 ]
注意:中括号“[]”与条件表达式之间一定要有空格,不然会报错
字符串测试
字符串运算符
运算符 | 说明 |
---|---|
string | 判断指定的字符是否为空串 |
– | – |
string1=string2 | 判断两个字符串string1和string2是否相等 |
– | – |
string1!=string2 | 判断两个字符串string1和string2是否不相等 |
– | – |
-n string | 判断string 是否是非空串 |
– | – |
-z string | 判断string 是否是空串 |
第一个 单字符串 形式 string 只能借助 test 来判断是否为空串
整数测试
整数测试的语法有两种:
test num1 op num2
或
[ num1 op num2 ]
num1 和 num2 表示参与比较的两个整数,可以是常量,也可以是变量
op 表示运算符
常见整数运算符
运算符 | 说明 |
---|---|
num1 -eq num2 | 比较 num1 是否 等于 num2 ,若 等于 就返回0 |
– | – |
num1 -ne num2 | 比较 num1 是否 不等于 num2 ,若 不等于 则返回0 |
– | – |
num1 -gt num2 | 比较 num1 是否大于 num2 , 若 大于 则返回0 |
– | – |
num1 -lt num2 | 比较 num1 是否小于 num2 , 若 小于 则返回0 |
– | – |
num1 -ge num2 | 比较 num1 是否大于等于 num2 , 若 大于等于 则返回0 |
– | – |
num1 -le num2 | 比较 num1 是否小于等于 num2 , 若 小于等于 则返回0 |
以上是针对整数的比较,不能用于比较浮点数什么的,会报错
文件测试
文件测试的语法有两种:
test op file
或
[ op file ]
上面语法中,op:表示操作符,file:表示要测试的文件名
常用的文件操作符
操作符 | 说明 |
---|---|
-a file | 文件是否存在,如果文件file存在,则结果为 0 |
– | – |
-b file | 文是否存在,且为快文件。如果文件file是一个已经存在的块文件,则结果为 0 |
– | – |
-c file | 文件是否存在,且为字符文件。如果file是一个已经存在的字符文件,则结果为 0 |
– | – |
-d file | 文件是否存在,且为目录。如果文件file是一个已经存在的目录,则结果为 0 |
– | – |
-e file | 同 -a 操作符 |
– | – |
-s | 文件的长度是否大于 0 或文件的为非空文件。如果 file 是一个非空文件,则结果为 0 |
– | – |
-f file | 文件存在,并且为常规文件。如果 file 是一个已经存在的常规文件,则结果为 0 |
– | – |
-w file | 文件是否存在且可写。如果文件 file 是一个可写文件,则结果为 0 |
– | – |
-L file | 文件是否存在,并且为符号链接。如果文件 file 是一个已经存在的符号链接,则结果为 0 |
– | – |
-u | 文件是否设置 suid 位。如果文件 file 已经设置了 suid 位,则结果位 0 |
– | – |
-r file | 文件是否存在,并且可读。如果文件 file 是一个已经存在的可读文件,则结果为 0 |
– | – |
-x file | 文件是否存在,并且可执行。如果文件 file 是一个已经存在的可执行文件,则结果为0 |
– | – |