1.概念及用法
- test 是Shell内置命令,用来检测某个条件是否成立
- test通常和if语句一起使用,并且大部分if语句都依赖test
- test命令有很多选项,可以进行数值、字符串和文件三个方面的检测
- Shell test命令的用法为:
test expression
- 当test判断expression成立时,退出状态为0,否则为非0值
- test命令也可以简写为【】,它的用法为:
[ expression ]
- 注意: 【】和expression之间的空格,这两个空格是必须的,否则会有语法错误
- 【】的写法更加简洁,使用率更高
2.test可以判断3类条件(数值比较)
- 数值条件测试可以用在数字和变量上
比较 | 描述 |
---|---|
n1-eq n2 | 检查n1是否与n2相等 |
n1-ge n2 | 检查n1是否大于或等于n2 |
n1-gt n2 | 检查n1是否大于n2 |
n1-le n2 | 检查n1是否小于或等于n2 |
n1-lt n2 | 检查n1是否小于n2 |
n1-ne n2 | 检查n1是否不等于n2 |
- 示例
- 不能在test命令中使用浮点值
3.test可以判断3类条件(字符串比较)
比较 | 描述 |
---|---|
str1 = str2 | 检查str1与str2相同 |
str1 != str2 | 检查str1与str2不同 |
str1 < str2 | 检查str1是否比str2小 |
str1 > str2 | 检查str1是否比str2大 |
-n str1 | 检查str的长度是否为非0 |
-z str | 检查str的长度是否为0 |
- 比较字符串相等性的时候,test的比较会将所有的标点和大写也考虑在内
- 示例1
- 示例2
- $USER #获取当前用户
- 示例3
- 示例4
- a3在测试中未被定义,但是测试结果依然为空
- 未被定义的变量在测试中会被认为为空
- 空和未初始化的变量对于shell脚本测试来说,有致命的影响,如果你不确定一个变量的内容,最好在数值或字符串比较中使用-n和-z来测试下这个变量是否含有值
4.test可以判断3类条件(文件比较)
比较 | 描述 |
---|---|
-d file | 是否存在并为一个目录 |
-e file | 是否存在 |
-f file | 是否存在并为一个文件 |
-r file | 是否存在并可读 |
-s file | 是否存在且非空 |
-w file | 是否存在并可写 |
-x file | 是否存在并执行 |
-o file | 是否存在并属当前用户所有 |
-G file | 是否存在并默认组与当前用户相同 |
file1 -nt file2 | file1是否比file2新 |
file1 -ot file2 | file1是否比file2旧 |
- 示例1
- 示例2
- 示例3
5.符合条件测试
- if-then语句允许使用布尔逻辑来组合测试,有两种布尔运算符可用:
[ condition1 ] && [condition2 ]
[ condition1 ] || [condition2 ]
- 示例
6.if-then的高级特性
- 使用双尖括号(())
- 使用方括号
- 表示通配
- 示例
来源:CSDN
作者:Outside!
链接:https://blog.csdn.net/qq_45594312/article/details/104309341