..

vscode插件系列(shellcheck)

shellcheck简介

    不知道什么时候开始,我已经从一个开发变成了一个半开发半运维的程序员了,在我的工作中,运维和开发同等的重要。编写shell脚本和编写golang,java代码也是同样的多。通常我使用vscode来编写shell脚本,除了java,我一切的代码编写工作都是使用vscode编辑器完成的。所以这里介绍一款shell语法检查的lint工具,shellcheck类似于jslint或者tslint这类的工具。如果你不希望你的shell脚本中不小心混入了sudo rm -rf / ,你就应该使用shellcheck, shellcheck的官网地址是:

https://www.shellcheck.net

打开官网以后,你可以在文本编辑窗口输入你的shell脚本,如果你代码有不恰当的地方,你会收到提示。

插件安装

    在vscode的插件搜索框输入shell,你就能搜索到shellcheck了,它的图标大概是下面这个样子: icon shellcheck这个插件需要安装shellcheck这个命令行工具,我们可以在github上找到这个项目的仓库:

https://github.com/koalaman/shellchecks

下面是这个软件在各种操作系统下的安装方法:

max osx

brew install shellcheck

FreeBSD

pkg install hs-ShellCheck

openSUSE

zypper in ShellCheck

Arch Linux

pacman -S shellcheck

Debian

apt-get install shellcheck

CentOS

yum -y install epel-release
yum install ShellChecks

这里安装完了shellcheck以后,我们再为vscode安装shellcheck插件就能生效了,如果是安装shellcheck检查,插件是不生效的。这里提一句,shellcheck命令是可以单独使用的,具体使用方式如下:

正在处理用于 man-db (2.7.6.1-2) 的触发器 ...
hellojukay@deepin:~/Data/Code/Web/blog$ shellcheck 
No files specified.

Usage: shellcheck [OPTIONS...] FILES...
  -e CODE1,CODE2..  --exclude=CODE1,CODE2..  exclude types of warnings
  -f FORMAT         --format=FORMAT          output format
  -C[WHEN]          --color[=WHEN]           Use color (auto, always, never)
  -s SHELLNAME      --shell=SHELLNAME        Specify dialect (sh,bash,dash,ksh)
  -x                --external-sources       Allow 'source' outside of FILES.
  -V                --version                Print version information

插件配置

    一般情况下,安装完了shellcheck以及vscode的shellcheck插件之后就能使用了,使用默认的配置就可以了。如果有需要,可以按照下面说明来配置vscode插件。 “shellcheck.enable”: true, // 安装以后默认就是激活的 “shellcheck.executablePath”: “shellcheck”, // 也可以是/usr/bin/shellcheck “shellcheck.run”: “onType”,//敲击键盘的时候检查,onSave是保存文件时候检查 “shellcheck.useWSL”: false, // 在windows上时候检查是否有linux子系统 “shellcheck.exclude”: [ “SC2114” // 忽略 “mr -rf /” 的警告 ]

使用效果

    这里写了一个简单删除文件的脚本 img1 img2 看来shellcheck还是很有用的,这里给出两个提示,并且给出了修改意见,每个提示的详细说明稳定可以在下面这个网址找到。

https://github.com/koalaman/shellcheck/wiki

我来按照要求修改一下脚本 img3 没有警告提示了。如果遇到其他的警告提示,处理方法也是类似。坚持使用shellcheck,久而久之,我们编写的shell脚本的质量就会越来越高。

总结

    shellcheck能减少我们编写shell脚本的低级错误,能规范我们的脚本语法,使我们写出更加符合shell标准的跨平台的脚本,推荐在编写shell脚本的时候使用shellcheck插件或者使用shellcheck命令行工具。