用途:在编写或审查用于自动化、CI/CD 或运维的 Bash 脚本时使用;也用于加固 shell 脚本的安全性与可移植性。不适用于仅需 POSIX shell 且不用 Bash 特性的场景、需要更高级语言处理复杂逻辑的任务,以及 Windows 原生脚本(PowerShell)。
主要能力:防御式编程与严格错误处理;POSIX 兼容与跨平台可移植性;安全参数解析与输入校验;健壮的文件操作与临时资源管理;进程编排与管道安全;生产级日志与错误报告;使用 Bats 做测试;用 ShellCheck 静态分析、shfmt 格式化;现代 Bash 5.x 特性与最佳实践;CI/CD 集成与自动化工作流。
使用方式:先定义脚本输入、输出与失败模式;应用严格模式与安全参数解析;用防御式模式实现核心逻辑;再用 Bats 与 ShellCheck 补充测试与检查。资料给出的关键做法包括:始终使用 set -Eeuo pipefail 并配合错误捕获;引用所有变量展开;优先用数组而非 for f in $(ls);Bash 条件用 [[ ]],POSIX 兼容时退回 [ ];用 getopts 与 usage 函数解析参数;用 mktemp 与清理 trap 安全创建临时文件;优先 printf 而非 echo;用 $() 而非反引号;实现带时间戳与可配置详细度的结构化日志;脚本设计为幂等并支持 dry-run;用 shopt -s inherit_errexit;用 IFS=$'\n\t';用 : "${VAR:?message}" 校验必需环境变量;用 -- 结束选项解析;支持 --trace 与 set -x;用 xargs -0 与 NUL 边界;用 readarray/mapfile 填充数组;用 SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)" 检测脚本目录;用 find -print0 | while IFS= read -r -d '' file; do ...; done 处理文件名。
适用场景:生产自动化、CI/CD 流水线、系统工具、脚本加固与可移植性改造、Bash 3→5 迁移、安全审查与可观测性建设。
限制:不适用于纯 POSIX 场景、复杂逻辑的高级语言任务、Windows 原生脚本;资料未提供具体收费、价格、平台支持范围与效果数据。