当前位置: 首页 > news >正文

Linux 的 test 命令

test命令是 Linux/Unix 系统中用于条件测试的实用程序,主要用于 shell 脚本中进行条件判断。它也被称为[命令(左方括号),因为test[实际上是同一个命令。

语法格式

test EXPRESSION

[ EXPRESSION ]

[[ EXPRESSION ]] # bash 的扩展测试命令

常见测试类型

1. 文件测试

  • -e FILE: 文件/目录是否存在
  • -f FILE: 是否为常规文件
  • -d FILE: 是否为目录
  • -r FILE: 文件是否可读
  • -w FILE: 文件是否可写
  • -x FILE: 文件是否可执行
  • -s FILE: 文件大小是否大于0
  • -L FILE: 是否为符号链接

示例:

if[-f"/etc/passwd"];thenecho"文件存在"fi

2. 字符串测试

  • -z STRING: 字符串长度是否为0
  • -n STRING: 字符串长度是否非0
  • STRING1 = STRING2: 字符串是否相等
  • STRING1 != STRING2: 字符串是否不等

示例:

if["$USER"="root"];thenecho"当前用户是root"fi

3. 数值比较

  • INTEGER1 -eq INTEGER2: 等于
  • INTEGER1 -ne INTEGER2: 不等于
  • INTEGER1 -gt INTEGER2: 大于
  • INTEGER1 -ge INTEGER2: 大于等于
  • INTEGER1 -lt INTEGER2: 小于
  • INTEGER1 -le INTEGER2: 小于等于

示例:

if["$#"-ne2];thenecho"需要2个参数"exit1fi

4. 逻辑操作符

  • ! EXPRESSION: 逻辑非
  • EXPRESSION1 -a EXPRESSION2: 逻辑与
  • EXPRESSION1 -o EXPRESSION2: 逻辑或

示例:

if[-f"$file"-a-r"$file"];thenecho"文件存在且可读"fi

高级用法

1. 组合测试

if["$age"-gt18-a"$age"-lt60];thenecho"适龄工作者"fi

2. 使用[[ ]](bash 特有)

[[ ]]是 bash 的扩展测试命令,支持更多特性:

  • 支持模式匹配:[[ $var == *.txt ]]
  • 支持正则表达式:[[ $var =~ ^[0-9]+$ ]]
  • 不需要引号包裹变量
  • 逻辑操作符使用&&||

示例:

if[["$file"==*.txt&&-r"$file"]];thenecho"这是一个可读的文本文件"fi

3. 测试命令返回值

ifgrep-q"error"logfile;thenecho"日志文件中包含错误"fi

实际应用示例

1. 检查文件是否存在并备份

file="data.txt"if[-f"$file"];thencp"$file""${file}.bak"echo"已创建备份文件${file}.bak"elseecho"文件$file不存在"fi

2. 检查参数数量

if[$#-lt1];thenecho"用法:$0文件名"exit1fi

3. 检查用户输入

read-p"输入年龄: "ageif[["$age"=~^[0-9]+$]];thenif["$age"-ge18];thenecho"成年人"elseecho"未成年人"fielseecho"请输入有效数字"fi

注意事项

  1. 使用[ ]时,括号与表达式之间必须有空格
  2. 字符串比较时,变量最好用引号包裹,防止空变量或包含空格的情况
  3. 数值比较不能使用>,<等符号,必须使用-gt,-lt等操作符
  4. 在 bash 脚本中,推荐使用[[ ]]替代[ ],因为它更安全且功能更强大
http://www.jsqmd.com/news/747804/

相关文章:

  • 2026年乐百氏桶装水配送:成都同城送水、景田桶装水配送、杭州同城送水、桶装水订购小程序、泉阳泉桶装水配送、上海同城送水选择指南 - 优质品牌商家
  • 2026年等离子清洗机定制哪家强?答案即将揭晓!
  • 观察通过 Taotoken 调用 Claude Code 的响应延迟与用量消耗
  • 5分钟掌握DistroAV网络视频传输:OBS直播多设备协同终极指南
  • 2026西南圆柱钢模板出租靠谱供应商名录及选型指南:圆形钢模板租赁厂家、圆柱子钢模板租赁厂家、圆柱钢模板出租厂家选择指南 - 优质品牌商家
  • 虚拟线程CPU绑定率飙升87%?Java 25 Scheduler Tuning Checklist,90%团队漏配的3个关键参数
  • PPTist终极指南:5分钟掌握免费在线PPT制作工具,告别PowerPoint依赖
  • AI Agent会话可视化分析器:从JSONL日志到交互式调试界面
  • 2026 AI大模型API代理站揭秘:OpenAI兼容、计费透明与稳定性权衡全攻略
  • 在Windows上无缝安装Android应用:APK Installer的革新之路
  • 2026室内拆除实操手册:酒店室内装修拆除公司、附近墙体拆除电话、专业墙体拆除公司、专业室内拆除电话、哪里有专业墙体拆除选择指南 - 优质品牌商家
  • 技能管理工具设计:从数据模型到可视化图谱的工程实践
  • 2026年深圳名探商务咨询有限公司官方联系方式公示,正规调查取证服务合作便捷入口 - 深圳名探吴探长
  • SharpKeys键盘重映射工具:彻底解决Windows按键布局烦恼的5个实用场景
  • 坚鹏:AI智能体辅导是知行学公司成为AI智能体创新应用引领者的保障
  • 9 种 RAG 架构,每位 AI 开发者必学:完整实战指南
  • 2026最新一键AI自动生成软著申请表最新格式:AI-Skills自动化生成全套材料,从申请表到源代码文档、用户手册、设计说明书一应俱全,还支持Java、Python、Go等多技术栈,完全适配独立开发
  • TCP 三次握手卡在SYN_SENT是什么?一文讲透建连超时的适用场景、与丢包/防火墙误判的边界及排查清单
  • 终极指南:如何用开源工具SubtitleOCR实现10倍速硬字幕提取
  • 分布式链路追踪核心原理与Go Web服务集成实践
  • 2026四川UPS电源供应商技术选型指南:四川ups电源厂家电话/四川全景ups电源/成都ups不间断电源/新能源光伏电源供应商/选择指南 - 优质品牌商家
  • Three.js UV 图像变换效果 | 三维可视化 / AI 提示词
  • 生成器不是性能银弹:什么时候该用 `yield` 省内存,什么时候它会拖慢 Python 数据处理吞吐?
  • 终极PL2303驱动解决方案:让你的老设备在Windows 10/11上重获新生
  • 学习c语言第4天
  • 任何元素的定位绝招,含各种弹窗(已实战)
  • WAM-202602:DreamZero
  • 四旋翼无人机自适应控制:RAPTOR框架解析与实践
  • 我的第一个开源项目:FileFinder —— 一个全由 AI 写的「文件管理工具」
  • My-TODOs:基于PyQt-SiliconUI的现代化桌面待办工具