用 Rust 编写的极速 Python 代码检查与格式化工具,内置 900 多条规则。
koalaman/shellcheck
一款对 bash/sh 脚本进行静态分析的工具,用于发现语法错误、语义陷阱和可移植性问题。
- Star
- 40,295
- Fork
- 1,973
- 未关闭 Issue
- 1,090
- 最近提交
- 前天
这是什么?
ShellCheck 会读取 shell 脚本,指出语法错误、语义问题以及可能让脚本在将来某些情况下失败的隐蔽陷阱。它针对 bash 和 sh 脚本,能发现未加引号的变量、错误使用的测试运算符、有问题的 find 或 grep 模式、被掩盖的退出码等问题,并为每条警告给出说明。
使用方式包括网页版 shellcheck.net、命令行,以及 Vim、Emacs、Sublime、VS Code、Pulsar 等编辑器插件。输出可选纯文本、JSON、CheckStyle XML 或 GCC 格式,退出码可直接用于在构建或测试中因警告而失败。
项目使用 Haskell 编写,采用 GPL-3.0 许可证。可通过大多数系统的包管理器、Docker、conda 安装,也提供 Linux、macOS 和 Windows 的预编译二进制文件。
核心功能
- 01检测 bash 和 sh 脚本中的引号错误、条件判断问题和误用命令。
- 02根据脚本的 shebang 检查可移植性问题,类似 checkbashisms。
- 03每条警告都附有说明,并链接到详细的 wiki 页面。
- 04可集成到多种编辑器和 CI 服务中。
- 05支持文本、JSON、CheckStyle XML 或 GCC 兼容格式输出。
适用场景
- 在 CI 流水线中检查 shell 脚本,出现新警告时使构建失败。
- 在运行脚本前发现未加引号的变量以及危险的 rm 或 find 用法。
- 确认面向 /bin/sh 编写的脚本没有依赖仅 bash 才支持的特性。
- 在编辑器中编写 shell 脚本时获得实时提示。
快速上手
- 1
使用 Homebrew 安装 ShellCheck
brew install shellcheck - 2
对脚本运行 ShellCheck
shellcheck yourscript
使用前须知
- 采用 GPL-3.0 许可证,属于 copyleft 许可。
- 从源码编译需要约 2GB 内存。
收录于专题
标签
常见问题
- shellcheck 是什么?
- 一款对 bash/sh 脚本进行静态分析的工具,用于发现语法错误、语义陷阱和可移植性问题。 ShellCheck 会读取 shell 脚本,指出语法错误、语义问题以及可能让脚本在将来某些情况下失败的隐蔽陷阱。它针对 bash 和 sh 脚本,能发现未加引号的变量、错误使用的测试运算符、有问题的 find 或 grep 模式、被掩盖的退出码等问题,并为每条警告给出说明。
- shellcheck 可以免费使用吗?用的什么许可证?
- shellcheck 以 GPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
- shellcheck 还在维护吗?
- 活跃维护中。shellcheck 最近一次提交是在 2026年11月5日。
- shellcheck 适合用来做什么?
- 在 CI 流水线中检查 shell 脚本,出现新警告时使构建失败。 在运行脚本前发现未加引号的变量以及危险的 rm 或 find 用法。 确认面向 /bin/sh 编写的脚本没有依赖仅 bash 才支持的特性。 在编辑器中编写 shell 脚本时获得实时提示。
- shellcheck 怎么安装和运行?
- 使用 Homebrew 安装 ShellCheck: brew install shellcheck 对脚本运行 ShellCheck: shellcheck yourscript
- 在哪里获取 shellcheck?
- 源代码和安装说明在 GitHub 上:https://github.com/koalaman/shellcheck
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
5.1万+236 本周2599RustMIT维护活跃更新于 17小时前
可插件扩展的 JavaScript 代码检查工具,用于发现问题代码模式,并可自动修复其中不少问题。
2.8万+1 本周5205JavaScriptMIT维护活跃更新于 18小时前
Rust 代码检查工具,内置 800 多条 lint 规则,用于发现常见错误并改写为更地道的写法。
1.4万2238RustApache-2.0维护活跃更新于 12小时前
Ruby 静态代码分析与格式化工具,依据社区 Ruby 风格指南检查代码,并可自动修复多数问题。
1.3万+1 本周3164RubyMIT维护活跃更新于 22小时前
一款 Python 静态代码分析工具,无需运行代码即可检查错误、执行编码规范并发现代码异味。
57451424PythonGPL-2.0维护活跃更新于 4天前
一款快速、可配置的 Go 代码检查工具,可直接替代 golint,并支持自定义规则和输出格式。
5562+3 本周343GoMIT维护活跃更新于 4天前