2.1 条件测试与流程控制
2.1 Bash 条件测试与流程控制
条件测试基础
Shell 通过命令返回状态码判断执行结果:
1 | |
约定:
| 状态码 | 含义 |
|---|---|
| 0 | 执行成功 |
| 非0 | 执行失败 |
常见条件测试方式:
1 | |
实际开发推荐使用:
1 | |
原因是支持更多语法且安全性更高。
数值与字符串判断
数值比较
| 运算符 | 说明 |
|---|---|
| -eq | 等于 |
| -ne | 不等于 |
| -gt | 大于 |
| -lt | 小于 |
| -ge | 大于等于 |
| -le | 小于等于 |
示例:
1 | |
字符串比较
1 | |
说明:
-z:字符串为空-n:字符串非空
变量引用建议始终使用双引号:
1 | |
文件与目录检测
运维脚本中经常需要判断文件状态。
| 参数 | 说明 |
|---|---|
| -e | 文件存在 |
| -f | 普通文件 |
| -d | 目录 |
| -r | 可读 |
| -w | 可写 |
| -x | 可执行 |
| -s | 文件非空 |
| -L | 软链接 |
示例:
1 | |
1 | |
if 条件语句
单分支
1 | |
双分支
1 | |
多分支
1 | |
逻辑运算符
AND
多个条件同时满足:
1 | |
OR
满足任意条件:
1 | |
NOT
条件取反:
1 | |
case 分支语句
处理固定选项时,case 比多层 if 更清晰。
1 | |
典型应用场景:
- 服务管理脚本
- 命令行参数处理
- 菜单选择程序
命令执行结果判断
推荐直接判断命令执行结果:
1 | |
不推荐依赖 $?:
1 | |
因为可读性较差。
编写规范
推荐写法:
1 | |
避免写法:
1 | |
总结
Shell 流程控制主要包括:
- 数值与字符串判断
- 文件和目录检测
- if / else / elif 分支结构
- 逻辑运算符
- case 多分支选择
- 命令执行结果判断
熟练掌握条件测试后,即可进一步学习循环、函数及自动化运维脚本开发。
2.1 条件测试与流程控制
https://blog.sh462li.top/2026/06/01/Shell_learn/2.1 条件测试与流程控制/