Shell 脚本 test 命令详解
test命令在bash shell脚本中经常以中括号([])的形式出现,而且在脚本中使用字母来表示比符号表示更专业,出错率更低。
测试标志 | 代表意义 |
---|---|
文件名、文件类型 | |
-e | 该文件名是否存在 |
-f | 该文件名是否存在且为file |
-d | 该文件名是否存在且为目录 |
-b | 该文件名是否存在且为一个block |
-c | 该文件名是否存在且为一个character device设备 |
-S | 该文件名是否存在且为一个socket文件 |
-p | 该文件名是否存在且为一个FIFO(pipe)文件 |
-L | 该文件名是否存在且为一个连接文件 |
文件权限检测 | |
-r | 检测文件名是否存在且具有“可读”权限 |
-w | 检测文件名是否存在且具有“可写”权限 |
-x | 检测文件名是否存在且具有“可执行”权限 |
-u | 检测文件名是否存在且具有“SUID”权限 |
-g | 检测文件名是否存在且具有“SGID”权限 |
-k | 检测文件名是否存在且具有“Sticky bit”权限 |
-s | 检测文件名是否存在且为“非空白文件” |
两个文件的比较 | |
-nt | (newer than)判断file1是否比file2新 |
-ot | (older than)判断file是否比file2旧 |
-ef | 判断file1与file2是否为同一个文件,可用在判断hard link上 |
数字之间的判定 | |
-eq | equal |
-ne | not equal |
-gt | greater than |
-lt | less than |
-ge | greater than or equal |
-le | less than or equal |
判断字符串的数据 | |
test -z string | 判断字符串是否为0,若为空返回true |
test -n string | 判断字符串是否为0,若为空返回false |
test str1 = str2 | 判断str1是否等于str2,若相等,返回true |
test str1 != str2 | 判断str1是否等于str2,若相等,返回false |
多重条件的判断 | |
-a | 两个条件同时成立,eg:test -r file a test -x file,同时成立返回true |
-o | 任何一个条件成立,eg:test -r file o test -x file,同时成立返回true |
! | 反向状态,如test!-x file,当file不具有x时,返回true |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-10-20 Log4j 配置详解
2020-10-20 Spring AOP 框架
2020-10-20 Spring IoC 容器
2020-10-20 Spring 简介
2020-10-20 window 安装 mysql8 教程