是否有任何shell(特别是bash或ksh)检查程序可以测试shell脚本的样式,最佳实践,命名约定等?(像Lint for C,或Perl :: Critic for Perl.)
我知道使用ksh你可以通过运行来进行语法检查,ksh -n script.ksh
但我希望的不仅仅是sytax检查 - 解析/分析实际代码的东西?
我可能运气不好,但我想这并没有伤害.
我发现了shellcheck:它测试引用中的常见错误以及您忽略的其他内容("因为它有效").
Debian和Ubuntu项目使用一个脚本checkbashisms
,该脚本查找可能表明某人依赖于/bin/sh
存在的特定模式bash
.
除此之外,大多数shell都有-n
解析和报告错误的选项.您可以针对多个不同的shell检查脚本,以确保它仅使用可移植的语法:
for shell in zsh ksh bash dash sh do echo "Testing ${shell}" ${shell} -n my_script.sh done
编辑添加:自编写此答案以来,已编写shellcheck,如后面的答案所示.与以前的建议相比,这比linting shell脚本做得更彻底.
我写了shlint来包装checkbashims和Brian的答案中提供的shell可用的其他基本linting选项.
它可以通过rubygems(gem install shlint
)安装,实际上是一种插件,但是你只需要perl(用于checkbashims)和一个符合POSIX标准的shell来解释shlint命令本身.应该在OSX和Ubuntu上开箱即用.