其实Shell脚本可以更好
作者:互联网
今天介绍使用的两个方法,提高脚本的可读性和健壮性,帮助写出更好的脚本。
使用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.linuxprobe.com/shell-scripe-better.html
标签:脚本,autocmd,Shell,vim,更好,call,setline,ShellCheck 来源: https://www.cnblogs.com/cainiaoyige1/p/15314001.html