其实Shell脚本可以更好
2021/9/21 7:30:35
本文主要是介绍其实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
这篇关于其实Shell脚本可以更好的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?