用途:本技能提供配置和使用 ShellCheck 的完整指引,用于对 shell 脚本做静态分析,发现常见陷阱并统一代码质量标准。适用于搭建 lint 基础设施、修复脚本问题、理解错误码、按项目需求配置规则、集成到开发流程以及抑制误报。
主要能力:ShellCheck 支持 Bash、sh、dash、ksh 等 POSIX shell,提供 100 多种警告与错误,可配置目标 shell 与标志,并能集成编辑器与 CI/CD。
安装:macOS 用 brew install shellcheck;Ubuntu/Debian 用 apt-get install shellcheck;也可从源码构建:git clone https://github.com/koalaman/shellcheck.git,cd shellcheck,make build,make install。用 shellcheck --version 验证。
配置:项目根目录创建 .shellcheckrc,可设置 shell=bash、enable=avoid-nullary-conditions、disable=SC1091 等;也可用环境变量 SHELLCHECK_SHELL、SHELLCHECK_STRICT、SHELLCHECK_CONFIG。
常见错误码:SC1000-1099 解析错误;SC2000-2099 shell 问题(如 SC2009 建议用 pgrep、SC2012 用 find、SC2015 避免 && || 代替 if-then-else、SC2016 单引号不展开);SC2100-2199 引号问题(如 SC2086 双引号防拆分、SC2115 用 $HOME、SC2181 直接检查退出码);SC3000-3999 POSIX 兼容问题。
用法示例:shellcheck --shell=bash --exclude=SC1091,SC2119 --enable=all script.sh;CI 中可用 find . -type f -name "*.sh" -exec shellcheck {} ;。输出格式支持默认、--format=gcc、--format=json、--format=quiet。
集成:可配置 pre-commit 钩子、GitHub Actions、GitLab CI(镜像 koalaman/shellcheck-alpine)。
抑制告警:行内用 # shellcheck disable=SC2086,脚本级用 # shellcheck disable=SC1091,SC2119,source 指令用 # shellcheck source=./helper.sh。
限制:资料未提供具体收费、价格、平台支持范围或效果保证;实际行为以 ShellCheck 官方文档为准。