关于 shellcheck
shellcheck 是用于验证 Shell 脚本的技能,帮助开发者在运行前发现语法、引号、安全和可移植性问题。它会检测 ShellCheck 配置并执行检查,报告包含 SC 代码和具体修复建议的问题。
主要功能
- 01验证 Shell 脚本语法与实践
- 02检测项目和用户配置
- 03按方言或严重级别检查脚本
- 04报告文件、行号、SC 代码和严重级别
- 05提供具体修正建议
适用场景
- 01提交前检查 Shell 脚本
- 02验证部署脚本
- 03从标准输入检查生成的脚本
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rshade/ agent-skills --skill shellcheck安装后在 Claude Code 中输入/shellcheck确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsontest-script.shreferences/shellcheck-rules.mdshellcheckrc详细介绍
Shellcheck
检查 shell 脚本(.sh、bash、sh、dash、ksh)中的语法错误、常见错误、引号问题和可移植性问题。捕获那些原本只有在运行时才会出现的错误。
此技能的功能
- 检查是否已安装
shellcheck;如果未安装,则指导安装。 - 检测项目特定的
.shellcheckrc,否则使用合理的默认配置。 - 检查 shell 脚本中的语法、引号、安全性、可移植性和最佳实践问题。
- 报告错误,提供具体的 SC 代码和修复方法。
安装检查
shellcheck --version 2>/dev/null
如果未安装,请使用以下任一方式安装:
# Debian/Ubuntu
sudo apt-get install shellcheck
# Homebrew (macOS/Linux)
brew install shellcheck
# Snap
sudo snap install shellcheck
# Download binary (Linux amd64)
curl -sL "$(curl -sL https://api.github.com/repos/koalaman/shellcheck/releases/latest \
| grep browser_download_url | grep linux.x86_64.tar.xz | cut -d'"' -f4)" \
| tar xJ -C /usr/local/bin shellcheck
如果安装失败,请停止并报告问题及解决步骤。不要悄悄跳过检查。
配置检测优先级
- 项目根目录中的
.shellcheckrc - 主目录中的
~/.shellcheckrc $XDG_CONFIG_HOME/shellcheckrc(如果已设置 XDG_CONFIG_HOME)- 默认配置(参见
references/shellcheckrc)
如果不存在项目配置,请先使用 references 中的默认配置,再运行检查。
检查工作流
1. Check shellcheck installation
├─ Installed → continue
└─ Missing → install, then continue (fail if install fails)
2. Detect project config
├─ Found → use it
└─ Not found → use default config from references/
3. Run validation
├─ All scripts:
│ find . -name '*.sh' -exec shellcheck {} +
├─ Specific files:
│ shellcheck script.sh deploy.sh
└─ With explicit shell:
shellcheck -s bash script.sh
4. Report results
├─ Valid → confirm and proceed
└─ Invalid → show errors, suggest fixes, re-validate after correction
检查方法
检查所有 shell 脚本(自动发现 *.sh)
find . -name '*.sh' -exec shellcheck {} +
检查指定文件
shellcheck script.sh deploy.sh
使用明确的 shell 方言进行检查
shellcheck -s bash script.sh
shellcheck -s sh script
shellcheck -s dash dash-script
从标准输入检查(适用于生成的脚本)
cat script.sh | shellcheck -
按严重程度筛选
# Warnings and above
shellcheck --severity=warning script.sh
# Errors only
shellcheck --severity=error script.sh
# Info and above (verbose)
shellcheck --severity=info script.sh
错误处理
安装失败
如果无法安装 shellcheck,请报告错误并提供解决步骤。不要继续检查。
检查失败
检查失败时,请针对每个错误报告以下信息:
- 文件和行号
- SC 代码(例如 SC2086)
- 严重程度(错误、警告、信息、风格)
- 问题所在
- 具体修复方法
示例:
Validation failed:
1. script.sh:5:3 SC2086 (info): Double quote to prevent globbing
Bad: echo $USER logged in at $HOME
Fix: echo "$USER logged in at $HOME"
2. script.sh:12:1 SC2164 (warning): Use 'cd ... || exit' in case cd fails
Bad: cd /app
Fix: cd /app || exit 1
3. script.sh:15:20 SC2155 (warning): Declare and assign separately
Bad: local result=$(whoami)
Fix: local result; result=$(whoami)
4. script.sh:18:1 SC2012 (info): Use find instead of ls in loops
Bad: for f in $(ls *.txt); do
Fix: for f in *.txt; do
报告错误后,建议修复方法,并在修正后重新检查。
规则参考
完整的规则参考、常见错误类别、SC 代码说明和详细修复示例,请参阅 references/shellcheck-rules.md。
评论
支持 Markdown