SuperAPI AI 工具集

shellcheck

通用与其它

查看项目

更新于 10-15 23:42

技能介绍

用途:ShellCheck 是 GPLv3 许可的静态分析工具,用于发现 bash/sh 脚本中的 bug,包括语法与解析错误、导致意外行为的语义问题、引号与分词缺陷、POSIX 兼容性警告,以及风格和最佳实践违规。该技能在用户提到 shellcheck、shell 检查、bash 脚本分析或 SC 错误码时自动路由。

主要能力:提供四个工作流——Analyze(分析脚本)、Fix(修复 shell 错误)、Setup(配置 shellcheck)、Explain(解释 SC 错误码)。支持指定 shell 方言、排除特定错误码,以及多种输出格式:gcc 用于编辑器集成,json 用于机器读取,diff 用于自动修复补丁。

使用方式:基本命令为 shellcheck myscript.sh;可用 -s bash 指定方言,-e SC2086,SC2046 排除错误码,-f gcc/json/diff 选择输出格式。可用内联指令 # shellcheck disable=SC2086 对下一条命令禁用,或在 shebang 后对整个文件禁用。

常见错误码:SC2086(未加引号的变量)、SC2046(未加引号的命令替换)、SC2034(未使用变量)、SC2154(未赋值变量)、SC2155(声明与赋值应分开)。

限制与注意事项:SC2086 在 [[ ]] 内不适用,因为 Bash 的 [[ ]] 不做分词;SC2034 会对通过 ${!prefix*} 间接使用、declare -p 内省或被 source 的变量产生误报;方言由 shebang 决定而非文件名,#!/bin/sh 会按 POSIX sh 检查并拒绝 bash 特性;在 .shellcheckrc 中全局禁用错误码会掩盖真实 bug,建议使用带说明的内联禁用;source 跟随需要 -x 标志,否则 source ./lib.sh 不会被分析;-f diff 补丁要求脚本能正常解析,存在语法错误时不会输出补丁。

适用场景:脚本分析、批量修复、项目配置(创建 .shellcheckrc、添加 pre-commit 钩子、配置 CI 工作流)以及错误码解释。完整文档可通过 SkillSearch 加载 ErrorCodes.md、Configuration.md、Integration.md 和 BestPractices.md。