Bash 脚本编写教程
Bash 脚本编写教程
Shell 是运维工程师的瑞士军刀,也是开发者通往 Linux 内核的桥梁。
本教程共 20 章,从 Bash 的历史与基础讲起,逐步深入到正则表达式、进程管理、网络自动化、测试框架与设计模式,最终落脚于生产级最佳实践。每章均包含:
- 📖 核心知识点与语法详解
- 💻 可直接运行的代码示例
- 📊 对比表格与速查表
- ⚠️ 常见陷阱与注意事项
- 🏢 真实业务场景
- 📚 扩展阅读
📚 目录
| 章节 | 标题 | 核心内容 |
|---|---|---|
| 01 | 入门与概览 | Bash 历史、Shell 类型、适用场景、与 Python 对比 |
| 02 | 基础语法 | 脚本结构、Shebang、变量、引号、命令替换 |
| 03 | 变量深入 | 变量类型、局部变量、环境变量、数组、关联数组 |
| 04 | 运算符 | 算术、比较、逻辑、字符串、文件测试、三元运算 |
| 05 | 流程控制 | if/case/for/while/until/select/break/continue |
| 06 | 函数 | 定义、参数、返回值、局部变量、递归、回调 |
| 07 | 输入输出 | 标准 IO、重定向、Here Document、管道、tee |
| 08 | 字符串操作 | 切片、替换、匹配、长度、参数展开 |
| 09 | 数组 | 索引数组、关联数组、遍历、切片、多维模拟 |
| 10 | 正则表达式 | BRE/ERE、匹配、替换、捕获组、条件匹配 |
| 11 | 错误处理 | set -e、trap、信号处理、清理、退出码 |
| 12 | 调试技术 | set -x、PS4、bashdb、ShellCheck、静态分析 |
| 13 | 子 Shell 与进程 | 进程替换、后台任务、wait/jobs、并行执行 |
| 14 | Here Document | 多行字符串、变量扩展、模板生成 |
| 15 | 文本处理 | cut/tr/sort/uniq/join/paste/comm |
| 16 | 系统管理 | 用户管理、服务管理、备份、cron 集成 |
| 17 | 网络脚本 | curl/wget/ssh/端口检查、自动化部署 |
| 18 | 测试 | bats/shunit2、断言、TDD、CI 集成 |
| 19 | 设计模式 | 配置管理、插件系统、日志框架、参数解析 |
| 20 | 最佳实践 | ShellCheck、代码规范、性能优化、安全、可移植性 |
🎯 学习路线建议
入门阶段 进阶阶段 实战阶段
┌─────────┐ ┌──────────────┐ ┌──────────────┐
│ 01 入门 │ │ 08 字符串 │ │ 16 系统管理 │
│ 02 基础 │───▶│ 09 数组 │───▶│ 17 网络脚本 │
│ 03 变量 │ │ 10 正则 │ │ 18 测试 │
│ 04 运算符│ │ 11 错误处理 │ │ 19 设计模式 │
│ 05 流程 │ │ 12 调试 │ │ 20 最佳实践 │
│ 06 函数 │ │ 13 子 Shell │ └──────────────┘
│ 07 IO │ │ 14 HereDoc │
└─────────┘ │ 15 文本处理 │
└──────────────┘
🛠 环境要求
| 工具 | 最低版本 | 推荐版本 | 用途 |
|---|---|---|---|
| Bash | 4.0+ | 5.2+ | 关联数组、mapfile 等特性 |
| ShellCheck | 0.7+ | 0.9+ | 静态分析 |
| bats-core | 1.5+ | 1.11+ | 单元测试框架 |
| GNU coreutils | 8.0+ | 9.0+ | 文本处理工具集 |
# 检查 Bash 版本
bash --version
# 检查 ShellCheck
shellcheck --version
# 安装 ShellCheck (Debian/Ubuntu)
sudo apt-get install shellcheck
# 安装 ShellCheck (macOS)
brew install shellcheck
💡 提示:建议在学习过程中亲手敲入每一段代码,而非复制粘贴。动手实践是掌握 Shell 编程的最佳方式。