今天介绍使用的两个方法,提高脚本的可读性和健壮性,帮助写出更好的脚本

一、vim自动添加头部注释信息

使用vim的自动命令(autocmd),在新建sh文件时添加头部的注释信息。在.vimrc中配置以后,使用vim操作文件的时候就会自动执行一些命令

在用户home目录下新建.vimrc文件,写入下面的内容,在使用vim新建.sh文件时就会执行函数 SetTitle(),将头部注释信息写入到新建的.sh文件,这在编写脚本时十分方便。

最后一行的:autocmd BufNewFile * normal G 的作用是自动将光标定位到末尾,也方便直接插入即可,不必移动光标来编写。autocmd为所有新建文件都添加头部注释信息,但是对于.sh  .py程序会添加#!有引用解释器,当然你也可以根据你的程序来elseif其他的解释器。

autocmd BufNewFile * exec ":call SetTitle()"

func SetTitle()

if expand("%:e") == 'sh'

    call setline(1,"#!/usr/bin/bash")

elseif expand("%:e") == 'py'

    call setline(1,"#!/usr/bin/python")

endif

call setline(2,"#")

call setline(3,"#********************************************************************")

call setline(4,"#Author:            *")

call setline(5,"#Email:            *@163.com")

call setline(6,"#Date:              ".strftime("%Y-%m-%d"))

call setline(7,"#FileName:          ".expand("%"))

call setline(8,"#Description:      The purpose of the script")

call setline(9,"#Copyright (C):    ".strftime("%Y")." All rights reserved")

call setline(10,"#********************************************************************")

call setline(11,"#")

call setline(12,"")

endfunc

autocmd BufNewFile * normal G

vim的autocmd的功能十分强大。Vim 为 78 个不同的编辑事件提供通知,这些事件分为八大类:会话启动和清理事件、文件阅读事件、文件编写事件、缓冲更改事件、选项设置事件、窗口相关事件、用户-互动事件和异步通知。可以在命令行中输入vim后,输入:help autocmd-events来查看vim中的autocmd的事件的帮助信息。

二、 ShellCheck检查脚本

ShellCheck是一款实用的 shell脚本静态检查工具。可以使用在线的检查地址,https://www.shellcheck.net/,进入网址贴上你的脚本运行检查即可使用。也可以本地安装,推荐后者,命令行中调用 shellcheck yourscript 即可。

拿笔者以前犯错的脚本来测试一下,以前肉眼可找了好久的问题,缺少一个空格!

修改后,再次运行,针对不够完善不够健壮的写法,提供建议。

1、Use $(..) instead of legacy `..`  , 使用$()代替`  `  ;

2、Consider using pgrep instead of grepping ps output,直接使用pgrep来代替ps和grep的结合查找进程;

3、Double quote to prevent globbing and word splitting. Quote this to prevent word splitting. 加上引号或者双引号。

可以在VS Code中安装插件ShellCheck,直接在编辑器中查看ShellCheck建议,以最快速度发现并修复问题。在VS Code中可以实时检查脚本的错误和修改建议,特别是在windows下编写时可能换行符是CRLF,ShellCheck会提示换成LF。

同时,在ShellCheck安装方面遇到一个问题,在基于debian的系统直接apt可以搜索安装到,但是基于红帽的系统即使安装了第三方的epel-release以后仍然找不到ShellCheck的rpm包。在koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts (github.com) 上有直接使用容器来操作,可以选择shellcheck或者带有Alpine系统的shellcheck 。但是笔者觉得下载github里面的预编二进制文件直接在本地使用比较好。

原文来自:https://www.jianshu.com/p/9c170874b098

本文地址:https://www.linuxprobe.com/shell-scripe-better.html编辑:张@宇,审核员:逄增宝

Linux命令大全:https://www.linuxcool.com/