素材阁

ShellCheck 速查

共 24 条 ShellCheck 用法,涵盖基础用法、输出与严重级别、忽略与内联、常见告警含义、集成。 支持搜索与分类筛选,点击即可复制。

基础用法

静态分析 shell 脚本,指出隐患。

命令说明
检查脚本
指定 shell 方言(sh/bash/dash/ksh)
跟随 source 的外部文件一起检查
批量检查
检查标准输入

输出与严重级别

便于接入 CI。

命令说明
输出 GCC 风格(编辑器可跳转)
输出 JSON(脚本解析)
输出 CheckStyle XML(CI 报告)
只报 warning 及以上
对可自动修复项生成补丁

忽略与内联

按规则码屏蔽误报。

命令说明
命令行排除指定规则
在文件头整体禁用某规则
行内禁用(同一行前后)
在无 shebang 文件里声明方言
常见处理方式

常见告警含义

高频规则码。

命令说明
未加引号的变量会分词与通配(应写 "$var")
未加引号的命令替换,应写 "$(cmd)"
建议用 $() 替代反引号
cd 未检查是否失败(建议 cd ... || exit)
无法解析动态 source,可加 -x

集成

编辑器与流水线。

命令说明
编辑器实时提示
提交前检查
流水线门禁
查看版本

使用说明

ShellCheck 速查:基础用法、输出与严重级别、忽略与内联、常见告警含义、集成;支持搜索与分类筛选,点击即可复制。

  1. 按用途点分类:基础用法、输出与严重级别、忽略与内联、常见告警含义、集成。
  2. 点「命令」列复制到终端。
  3. 带 source 的脚本加 -x,输出接 CI 用 -f gcc/json/checkstyle。
  4. 误报可用 # shellcheck disable=SCxxxx 精准屏蔽。

常见问题

SC2086 是什么?
变量未加引号会导致分词与通配,应写成 "$var";这是最高频的告警,修好能避免大量隐藏 bug。
如何让 CI 只报严重问题不失败?
用 -S 指定严重级别(如 -S warning)过滤低级别,再决定是否作为门禁;也可用 -f checkstyle 输出报告供平台解析。
需要联网吗?
不需要,本地可用。

延伸阅读

相关工具