Shell脚本编程规范养成

系列文章目录


Chapter1 Shell脚本入门
Chapter2 Shell脚本编程规范养成
Chapter3 Shell变量的定义及用法
Chapter4 Shell流程控制语句IF



前言

Shell脚本的开发规范及习惯非常重要,虽然这些规范不是必须要遵守的,但有了好的规范和习惯,可以大大提升开发效率,并能在后期降低对脚本的维护成本,当多人协作开发时,大家有一个互相遵守的规范就显得尤为重要。即使一个人开发,最好也采取一套固定的规范,这样脚本就会更易读、更易于后期维护。最重要的是让自己养成一个一出手就很专业和规范的习惯。


一、常用规范

1. 首行指定脚本解释器

#!/bin/bash

2. Shell脚本开头增加版本,版本信息

#!/bin/bash
# Date:		2022-11-16
# Author:	Created by yanjianjun
# Blog:		https://blog.csdn.net/weixin_43770382
# Description:This scripts function is ...
# Version:	1.0

上述内容可修改“~/.vimrc”配置文件,当执行vim编辑文件时自动加上以上信息的功能。

2.1 创建自定义的脚本模板

在~/.vim/目录下创建名为sh_header.temp文件,接下来在其中添加以下行(可以随意设置自己的模板文件位置和自定义头文件)并保存文件。

[sysadmin@ansible ~]$ mkdir .vim
[sysadmin@ansible ~]$ cd .vim
[sysadmin@ansible .vim]$ vim sh_header.temp
#!/bin/bash
# Date:		2022-11-16
# Author:	Created by yanjianjun
# Blog:		https://blog.csdn.net/weixin_43770382
# Description:This scripts function is ...
# Version:	1.0

2.2 配置autocmd 在vimrc文件中

  1. 现在打开vim初始化文件~/.vimrc进行编辑,并向其中添加以下行。
au bufnewfile *.sh 0r /home/sysadmin/.vim/sh_header.temp
  • au 表示autocmd
  • bufnewfile 用于打开不存在的文件进行编辑的事件
  • *.sh 所有以.sh扩展的文件

上面这一行表示vi/vim编辑器读取模板文件(/home/sysadmin/.vim/sh_header.temp)的内容,并将其插入用户打开的每个新.sh文件中。

2.3 测试打开新脚本文件

[sysadmin@ansible ~]$ vim 123.sh
#!/bin/bash

#####################################################
# Date:     2022-11-16
# Author:   Created by yanjianjun
# Blog:     https://blog.csdn.net/weixin_43770382
# Description:This scripts function is ...
# Version:  1.0
#####################################################

3. Shell脚本中尽量不用中文(包括注释)

尽量使用英文注释,防止本机或切换系统环境后中文乱码的困扰。

4. Shell脚本的命名应以.sh为扩展名

例如:script-name.sh

5. Shell脚本应存放在固定路径下

按照管理,普通用户的脚本,建议放在~/bin目录下,root用户的脚本建议放在/usr/local/bin目录中。RHEL系操作系统,上述两个目录默认存在于$PATH路径中,执行脚本时,写全路径或脚本名称都可以正常执行。

二、Shell脚本代码书写的良好习惯

1.成对的符号应一次性写出来

成对的符号一次性写出来,然后退格在符号里增加内容,防止遗漏。成对的符号包括:

扫描二维码关注公众号,回复: 14688142 查看本文章
	{ }、[ ]、“ ”、’ ‘、` `、[[  ]]

2.中括号两端要至少有一个空格

键入中括号时两端即可流出空格[ ],然后再退格键入中间的内容,双中括号([[ ]])也是是如此。

3.流程控制语句,一次性将格式写完,再添加内容。

if expression; then
	command
fi

for expression; do
	内容
done

while、until、case等语句也是一样。

4.通过缩进让代码更易读

if expression; then
	command1
elif expression; then
	command2
else
	command3
fi

5.常规变量赋值应加双引号

常规变量赋值应加双引号(" "),并且等号前不能有空格。需要强引用的,指所见即所得的字符引号,使用单引号(’ '),如果是命令引用,则用反引号( ).

FILE="iplist"

注意:脚本中的单引号、双引号及反引号必须为英文状态下的符号。


总结

有关Shell脚本开发规范及习惯的更多内容,持续更新,未完待续。

猜你喜欢

转载自blog.csdn.net/weixin_43770382/article/details/127893321