一、知识点概览
在 bash shell 脚本中,结构化命令用于控制命令的执行流程,通过条件判断决定是否执行特定命令。主要包括以下核心知识点:
| 命令结构 | 用途 | 核心特点 |
|---|---|---|
| if-then | 基本条件判断 | 根据命令退出状态码(0 为成功)执行命令 |
| if-then-else | 双向条件判断 | 命令执行失败时执行 else 分支 |
| elif | 多条件判断 | 串联多个条件,替代嵌套 if |
| test | 条件测试工具 | 支持数值、字符串、文件三类条件判断 |
方括号[] | test 的同义语法 | 需注意前后空格,功能与 test 一致 |
双方括号[[ ]] | 高级字符串处理 | 支持模式匹配,无需转义特殊字符 |
双括号(( )) | 高级数学运算 | 支持算术运算符和自增 / 自减 |
二、详细知识点与实践
1. if-then 语句
概念:通过判断命令的退出状态码(0 为成功)决定是否执行后续命令。
语法:
执行结果:
plaintext
2. if-then-else 语句
概念:命令执行失败时,可执行 else 分支的命令。
语法:
实践示例:
执行结果:
plaintext
3. elif 多条件判断
概念:通过 elif 串联多个条件,避免嵌套 if 的复杂结构。
语法:
执行结果:
plaintext
Pass
4. test 命令与方括号[]
概念:test 命令用于测试三类条件,方括号[]是其同义语法(需注意空格)。
(1)数值比较
| 运算符 | 描述 | 示例 |
|---|---|---|
| -eq | 等于 | [ 5 -eq 5 ] |
| -ne | 不等于 | [ 5 -ne 3 ] |
| -gt | 大于 | [ 10 -gt 5 ] |
| -lt | 小于 | [ 3 -lt 5 ] |
实践示例
执行结果:10 < 20
(2)字符串比较
| 运算符 | 描述 | 示例 |
|---|---|---|
| = | 相等 | [ "a" = "a" ] |
| != | 不等 | [ "a" != "b" ] |
| -n | 非空 | [ -n "test" ] |
| -z | 为空 | [ -z "" ] |
实践示例:
执行结果:Testing < testing(大小写 ASCII 值不同)
(3)文件比较
| 运算符 | 描述 | 示例 |
|---|---|---|
| -e | 文件存在 | [ -e ./test.sh ] |
| -d | 是目录 | [ -d ./docs ] |
| -f | 是文件 | [ -f ./test.sh ] |
| -r | 可读 | [ -r ./test.sh ] |
实践示例
执行结果:./test.sh is a readable file
5. 复合条件逻辑
概念:使用&&(与)和||(或)组合多个条件。
语法:
实践示例:
6. 双方括号[[ ]]与双括号(( ))
(1)双方括号[[ ]]
特点:支持模式匹配,无需转义特殊字符(如>)。
示例:
结果:Hello, zhang
(2)双括号(( ))
特点:支持高级数学运算(如幂运算、自增)。
示例:
结果:5^2 is greater than 20





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



