什么是shellcheck?如果您成为LinuxBash开发人员已有一段时间,您可能会在自己的脚本或其他人的脚本中发现大量错误。当我们开发代码时,错误必然会被引入代码中。即使是最优秀的开发人员也可能偶尔会忽略代码中不可预见的复杂性或警告。在Bash中,没有像C++那样的真正的编译器。但是,有一组工具可以在开发Bash脚本时提供很大帮助。比如shellcheck。这个出色的实用程序将解析Bash脚本文件,并根据在分析过程中发现的内容提出建议。这有点像拥有Bash编译器。shellcheck等工具在操作上与其他运行时工具不同,例如执行脚本bash-x以实时查看正在执行的脚本中的每个命令。原因是shellcheck将分析脚本(文件)而不实际执行它,再次类似于编译器所做的。安装shellcheck要在基于Debian/Apt的Linux发行版(例如Ubuntu和Mint)上安装shellcheck,请在终端中执行以下命令:linuxmi@linuxmi:~/www.linuxmi.com$sudoaptinstallshellcheck要在基于RedHat/Yum的系统上安装shellcheck在Linux发行版(如RHEL、Centos和Fedora)上安装shellcheck,请在终端执行以下命令:linuxmi@linuxmi:~/www.linuxmi.com$sudoyuminstallshellcheckrunshellcheck安装完shellcheck后,我们可以用损坏的脚本做一个简单的测试。首先我们定义我们的脚本linuxmi.com.sh如下:startfif你能找到多少错误?(提示:8!)。接下来让我们看看shellcheck对这段代码做了什么:linuxmi@linuxmi:~/www.linuxmi.com$shellchecklinuxmi.sh1,它立即发现第一行的shebang规范有问题。我们的shebang行#!/bin/hash应该是#!/bin/bash。让我们解决这个问题。问题1/8已修复!我们还将解决shellcheck立即发现的另外两个问题:2.您是否忘记关闭这个单引号字符串?(你忘记关闭这个单引号字符串了吗?),对于第二行:非常准确!问题2/8已修复。3.对于第三个问题,我们/开发人员对shellcheck的意图有点困惑,这是意料之中的,因为第2行打开了一个字符串,该字符串``仅在第5行另一个人看到直到终止!由于第三个问题是第二个问题的结果,这次运行将使我们能够暂时解决这两个问题。我们的脚本现在看起来像这样:#!/bin/bashecho'BashisnotHash'echomoreerrorsformewww.linuxmi.com"if[-d./linuxmi};thanecho'sure!
