ShellCheck是一个静态分析工具,显示有关bash / sh shell脚本中的错误代码的警告和建议。 它可以通过以下几种方式使用:通过在网络编辑器(Ace - 用JavaScript编写的独立代码编辑器)中粘贴您的shell脚本(在https://www.shellcheck.net中,它始终与最新的git同步)提交,并且是给ShellCheck的最简单的方法)即时反馈。
或者,您可以将其安装在机器上,并从终端运行,并将其与文本编辑器以及构建或测试套件集成。
ShellCheck主要有三件事情:
- 它指出并解释了典型的初学者的语法问题,导致shell给出隐含的错误消息。
- 它指出并解释了典型的中级语义问题,导致shell的行为奇怪和反直觉。
- 它还指出了可能导致高级用户的其他工作脚本在未来情况下失败的微妙注意事项,角落和陷阱。
在本文中,我们将展示如何以各种方式安装和使用ShellCheck,以在Linux中的shell脚本中查找错误或错误代码。
如何在Linux中安装和使用ShellCheck
ShellCheck可以通过您的程序包管理器轻松地安装在本地,如图所示。
在Debian / Ubuntu上
# apt-get install shellcheck
在RHEL / CentOS上
# yum -y install epel-release # yum install ShellCheck
在Fedora上
# dnf install ShellCheck
一旦安装了ShellCheck,我们来看看如何在前面提到的各种方法中使用ShellCheck。
使用ShellCheck从Web
转到https://www.shellcheck.net并将脚本粘贴到提供的Ace编辑器中,您将在编辑器的底部查看输出,如下面的屏幕截图所示。
在以下示例中,测试shell脚本由以下几行组成:
#!/bin/bash #declare variables MINARGS=2 E_NOTROOT=50 E_MINARGS=100 #echo values of variables echo $MINARGS echo $E_NONROOT exit 0;
ShellCheck - 在线Shell脚本分析工具
从上面的屏幕截图,前两个变量E_NOTROOT和E_MINARGS已被声明但未被使用,ShellCheck报告为“暗示错误”:
SC2034: E_NOTROOT appears unused. Verify it or export it. SC2034: E_MINARGS appears unused. Verify it or export it.
那么其次,错误的名字(在语句echo $ E_NONROOT中 )用于回显变量E_NOTROOT ,这就是为什么ShellCheck显示错误:
SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is
再次,当您查看echo命令时,变量尚未被双引号(有助于防止全局和分词),因此Shell检查显示警告:
SC2086: Double quote to prevent globbing and word splitting.
从终端使用ShellCheck
您也可以从命令行运行ShellCheck,我们将使用上述相同的shell脚本,如下所示:
$ shellcheck test.sh
ShellCheck - 检查Shell脚本中的错误代码
从文本编辑器使用ShellCheck
您还可以直接在各种编辑器中查看ShellCheck建议和警告,这可能是使用ShellCheck更有效的方式,一旦保存文件,它会显示代码中的任何错误。
在Vim中 ,使用ALE或Syntastic(我们将使用这个):
首先安装Pathogen ,以便安装合成物。 运行以下命令获取pathogen.vim文件及其所需的目录:
# mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
然后将其添加到〜/ .vimrc文件中:
execute pathogen#infect()
一旦你已经安装了Pathogen体,你现在可以把Synthetic放入〜/ .vim / bundle中 ,如下所示:
# cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git
接下来,关闭vim并启动它以重新加载它,然后键入以下命令:
:Helptags
如果一切顺利,您应该将ShellCheck与Vim集成,以下屏幕截图显示了如何使用上述相同的脚本。
检查Vim中的错误Shell脚本代码
如果您按照上述步骤发生错误,那么您可能没有正确安装Pathogen 。 重做步骤,但确保您执行以下操作:
- 创建了〜/ .vim / autoload和〜/ .vim / bundle目录。
- 将执行致病菌#感染()行添加到〜/ .vimrc文件。
- 在〜/ .vim / bundle中的git克隆的内容。
- 使用适当的权限访问上述所有目录。
您还可以使用其他编辑器检查shell脚本中的错误代码,如:
- 在Emacs中 ,使用Flycheck 。
- 在升华中,使用SublimeLinter。
- 在Atom中 ,使用Linter。
- 在大多数其他编辑器中,使用GCC错误兼容性。
注意 :使用不良代码库执行更多ShellChecking。
ShellCheck Github Repository: https : //github.com/koalaman/shellcheck
而已! 在本文中,我们展示了如何安装和使用ShellCheck在Linux中的shell脚本中发现错误或错误的代码。 通过下面的评论部分与我们分享您的想法。
你知道任何其他类似的工具吗? 如果是的话,还可以在评论中分享他们的信息。