Repolode
koalaman

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. 1

    使用 Homebrew 安装 ShellCheck

    brew install shellcheck
  2. 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 数据每日更新。

相关项目