炫意html5
最早CSS3和HTML5移动技术网站之一

其实Shell脚本可以更好

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

一、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里面的预编二进制文件直接在本地使用比较好。

炫意HTML5 » 其实Shell脚本可以更好

Java基础教程Android基础教程