Skip to content

十七、测试与静态检查 ​

Shell 脚本直接操作进程、文件和远端系统,测试必须同时覆盖 stdout、stderr、退出状态和副作用。本章建立 “语法 → 静态检查 → 格式 → 单元测试 → 集成/端到端 → 兼容矩阵”的质量门禁。

本章目录 ​

学习目标 ​

  1. 正确选择 ShellCheck 方言,记录可审查的抑制理由。
  2. 分别断言 stdout、stderr、退出状态和文件/进程副作用。
  3. 用临时 PATH 注入命令桩,不修改系统命令。
  4. 设计确定性测试,覆盖失败、信号、中断、清理和兼容性。

质量工具依赖 ​

这些工具不属于 POSIX,但属于本知识库的强制质量门禁。版本应在本地和持续集成 (Continuous Integration,CI)环境中固定;工具缺失时必须使门禁失败,不能静默跳过。

工具本机核验版本许可证与维护安装方式可选替代缺失时的行为
ShellCheck0.11.0GNU General Public License v3.0(GPL-3.0);koalaman/ShellCheck 持续维护brew install shellcheck / apt-get install shellcheck使用固定版本的官方容器镜像;sh -n 只能补充、不能替代语义检查门禁写 stderr 并退出 127
shfmt3.14.1BSD 3-Clause License;mvdan/sh 持续维护brew install shfmt;Linux 可使用发行版包或固定版本二进制gofmt 风格的其他格式器不能保证同一输出门禁写 stderr 并退出 127
Bats-core1.14.0MIT License;bats-core 社区持续维护brew install bats-core / apt-get install bats本库的无框架测试运行器;复杂断言和生命周期能力较少要求 Bats 的测试阶段写 stderr 并退出 127

本库固定格式参数为 POSIX 脚本 shfmt -ln posix -i 4 -ci,Bash 脚本 shfmt -ln bash -i 4 -ci。升级工具版本时先在独立分支检查新增诊断与格式差异。

前置知识 ​

ICP 备案号待补充 · Gitee 主页