自动化与脚本
编写生产级 Bash 脚本时用:防御式模式保证容错与安全
在编写需要故障容错、跨平台且可维护的自动化 Shell 脚本、CI/CD 流水线或系统管理工具时,用防御式 Bash 编程实践避免常见陷阱。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
编写生产级 Bash 脚本时用:防御式模通用
解决思路
- 始终启用严格模式:脚本开头写 `set -Eeuo pipefail`。
- 引号包裹所有变量:写成 `"$variable"` 以防止单词拆分(word splitting)。
- 条件判断使用 `[[ ]]`:比 `[ ]` 更健壮。
- 实现错误捕获(error trapping):优雅地捕获并处理错误。
- 校验所有输入:检查文件是否存在、权限、格式等。
- 用函数提升复用性:函数名加上有意义的前缀。
- 实现结构化日志:日志中带上时间戳和日志级别。
- 支持 dry-run 模式:让用户先预览将要发生的变更。
- 安全处理临时文件:用 `mktemp` 创建,并在 `trap` 中清理。
- 按幂等性设计:脚本应可安全地重复运行。
- 记录依赖需求:列出所需依赖及其最低版本。
- 测试错误路径:确保错误处理分支真的能正常工作。
- 用 `command -v` 检查可执行文件:比 `which` 更安全。
- 优先使用 `printf` 而非 `echo`:在不同系统上行为更可预测。
适用边界 · 注意事项
- 目标运行环境不是 Bash(如 POSIX sh、Windows cmd/PowerShell)时,`[[ ]]`、`set -o pipefail` 等 Bash 专有特性不可用。