IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Shell脚本编程规范 -> 正文阅读

[开发工具]Shell脚本编程规范


俗话说“无规矩不成方圆”,虽然Shell是一门自由度很高的语言,没有严格的缩进要求、使用变量不需要事先声明、赋值即确定数据类型,但是按照适当的规范会使代码看起来美观、易于维护、易于看懂,下面根据个人经验总结了一些编程规范。

一、注释

头部注释

#!/bin/bash
# vim:sw=4:ts=4:et
<<INFO
SCRIPYT:test.sh
AUTHOR:anqixiang<邮箱号>
DATE:2021-09-12
DESCRIBE:描述脚本主要功能
SYSTEM:适配哪些操作系统
WARNING:警告信息
VERSION:1.1.0<可选>
MODIFY:记录修改信息,方便查看和维护
INFO

单行注释与多行注释

单行注释以#号开头,如

#修改IP地址

多行注释表示方法(INFO可以用别的标识代替,但需与结尾保持一致)

<<INFO
SCRIPYT:test.sh
AUTHOR:anqixiang<邮箱号>
DATE:2021-09-12
INFO

二、排版规范

1.程序块采用缩进,缩进为4个空格

修改vim中Tab键的距离

举例

while true
do
    sleep 5
done

2.函数编写

函数首字母大写,并用“_”隔开,如Modify_Ip;
函数名后面必须加小括号()
第一个大括号紧接小括号后面
第二个大括号顶格单独占一行
同级别的代码块要左对齐
举例

Modify_Ip(){
	command1
	command2
	if 表达式;then
	    command 3
	else
	    command 4
	fi
}

3.命令较长需分行书写,在低优先级操作符处划分新行,用'\'标识

command 1 | command 2 \
    && command 3 \
    || command 4

4.一行只写一条语句

command 1;command 2			#不推荐
command 1					#推荐
command 2

5.逻辑运算符&&、||和重定向、管道符前后要留空格

command 1 && command 2
command 1 | command 2

6.一个函数只完成一个功能,且不能超过100行

7.case语句格式

case $value in
val1)
    command 1
    ;;
*)
    command 2
esac

8.注释与上面的代码用空行隔开

command 1
[空一行]
#注释内容
command 2

三、变量规范

1.变量名由字母、数字、下划线组成, 只能以字母、下划线开头

2.尽量减少全局变量,可在变量前面加local使其成为局部变量

local num=0

全局变量仅在当前Shell有效,使用export定义的全局变量在所有子进程中依然有效

3.环境变量和全局变量大写,局部变量小写(使用下划线连接,如host_ip ),函数名首字母大写(建议使用动词_名字组合,如Modify_Ip)

4.引用变量用\${value}

val=${value}
[[ ${value} == "test" ]] && command 1

4.不能被清除和修改的变量通过readonly variable声明

5.常用变量集中写在脚本开头,便于修改

6.对变量赋空值时,建议使用unset

unset sum

7.用ln创建软链接文件,必须先判断文件是否存在,存在时必须先删除,然后再创建软链接

[ -h /data ] && rm -rf /data
ln -sf /home/data /data

8.命令替换推荐使用$(),在groovy中建议使用``(反撇号)

local_ip=$(ip addr | grep ......)

四、安全清理

1.环境变量和history不能有敏感信息

五、建议

  • 判断推荐使用[[ ]]
  • 判断命令是否存在用command -v代替which(command是内部命令,系统自带;如果命令不存在不会输出任何信息)
  • 路径尽量保持绝对路径,不易出错,如果非要用相对路径,最好用./修饰
  • 简单的if尽量使用&& ||,写成单行。比如[[ x > 2]] && echo x
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:28:08  更:2021-09-13 09:30:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:39:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码