test命令可以判断三类条件
- 数值比较
- 字符串比较
- 文件比较
test是shell内置命令,用来检测某个条件是否成立
test通常和if语句一起使用,并且大部分if语句都依赖test
shell test命令的用法有两种:
第一种:
test expression #当test判断expression成立时,退出状态为0,否则为非0值
第二种:
[ expression ] #[ ]和expression的两边都有空格,这个空格是必须的,否则会导致语法错误
#[ ]写法更简洁,使用频率更高
1.数值比较:
| 比较 | 描述 |
|---|---|
| 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 |
- 例1:

- 例2:

2.字符串比较:
| 比较 | 说明 |
|---|---|
| str1 = str2 | 检查str1是否和str2相同 |
| str1 != str2 | 检查str1是否和str2不同 |
| str1 < str2 | 检查str1是否比str2小 |
| str1 > str2 | 检查str1是否比str2大 |
| -n str1 | 检查str1的长度是否非0 |
| -z str1 | 检查str1的长度是否为0 |
比较字符串是否相等
- test比较字符串相等性时会将所有的标点和大写也考虑在内
- 方法:
[ str1 = str2 ]
[ str1 != str2 ]
- 例1:

- 例2:

比较字符串的大小
- 字符串大小的比较遵循字典顺序,规则如下:
- 1.如果第一个字符串是第二个字符串的前缀,那么第一个小(比如a小于about)
- 2.从字符串的开头比较,按照字母顺序,a比b小(比如about小于ball)
- 3.如果第一个字符相同,再比较第二个(比如about小于above)
- 方法:
[ str1 < str2 ]
[ str1 > str2 ]
- 例:

比较字符串的长度
- 没有被定义的字符串长度默认为0
- 方法:
[ -n str1 ] #检查str1的长度是否非0
[ -z str1 ] #检查str1的长度是否为0
- 例:

3.文件的比较:
| 比较 | 说明 |
|---|---|
| -d file | 检查file是否存在并是一个目录 |
| -e file | 检查file是否存在 |
| -f file | 检查file是否存在并是一个文件 |
| -r file | 检查file是否存在并可读 |
| -s file | 检查file是否存在并非空 |
| -w file | 检查file是否存在并可写 |
| -x file | 检查file是否存在并可执行 |
| -O file | 检查file是否存在并属当前用户所有 |
| -G file | 检查file是否存在并且默认组与当前用户相同 |
| file1 -nt file2 | 检查file1是否比file2新 |
| file1 -ot file2 | 检查file1是否比file2旧 |
检查file是否存在并是一个目录
- 此处的$HOME是shell中的环境变量
- 例:

-e检查file是否存在
- 例:

-f检查file是否存在并是一个文件
- 例:

-r检查文件是否存在并可读
- 例:
可读:

不可读:

-s检查文件是否存在并为非空
- 例:
第一次执行:

第二次执行:

-w检查文件是否存在并可写
- 例:
执行时使用普通用户:


-x检查文件是否存在并可执行
- 例:


-O检查file是否存在并属当前用户所有
- 例:

-G检查文件是否存在并且默认组与当前用户相同

比较文件的新旧
- 例:

多个条件同时比较
- 例:

test命令中可使用变量
- 在test中使用变量需要用双方括号包围[[ ]]
- 例:

本文深入解析了Shell中的test命令,详细介绍了如何使用该命令进行数值、字符串和文件的比较。通过具体的示例,读者可以了解到test命令在条件判断中的强大功能。
1013

被折叠的 条评论
为什么被折叠?



