test是Linux和Unix系统中一个用于评估条件表达式的核心命令,在Shell脚本编程中不可或缺。它不产生直接输出,而是通过退出状态码(Exit Status)来悄无声息地告诉你结果是“真”还是“假”,脚本的核心逻辑(if,while,until)都依赖于此。
💡最简洁:命令行直接测试
在-a和-o等逻辑运算符被建议避免使用的情况下,最推荐的方式是使用Shell的&&(逻辑与)和||(逻辑或)操作符:
bash
#标准写法:使用&&进行逻辑与[-d/etc]&&echo"/etc是一个目录"#标准写法:使用||进行逻辑或[-f/etc/passwd]||echo"/etc/passwd不是一个普通文件"你还可以立即通过$?变量查看刚才命令的退出码,其中0表示“真”,1表示“假”:
bash
#测试0是否等于0,结果为真test0-eq0;echo$?#输出0#测试文件是否存在,结果为假test-e/path/to/nonexistent_file;echo$?#输出1⚙️核心功能分类
test能测试文件属性、字符串和数值,其丰富选项是强大功能的核心。
1.文件测试
这些选项用于检查文件的存在性、类型和权限。
选项 | 说明 |
| 文件存在。 |
| 存在且为普通文件。 |
| 存在且为目录。 |
| 存在且为软链接。 |
| 存在且大小非0(非空)。 |
| 存在且可读/可写/可执行。 |
|
|
|
|
2.字符串测试
用于比较字符串内容或检查其是否为空。
运算符 | 说明 |
|
|
|
|
|
|
|
|
| 按字典序比较(在 |