【Shell脚本编程系列】Shell脚本开发的习惯和规范
1、开头指定脚本解释器
#!/bin/sh或#!/bin/bash
2、开头加版本版权信息
#Date
#Author
#Function
#Version
提示:可配置vim编辑文件时自动加上以上信息,方法是修改~/.vimrc配置文件
3、脚本中不用中文注释
尽量用英文注释,防止本机或切换系统环境后出现中文乱码的困扰
4、尽量以.sh为扩展名
Script-name.sh
5、代码书写优秀习惯
1)成对的内容一次性写出来,防止遗漏:{} [] ‘’ “”
2)[]中括号两端要有空格
3)流程控制语句一次完成
If语句格式一次完成:
If 条件内容
then
内容
fi
for循环格式一次完成:
for
do
内容
done
4)通过缩进让代码易读
7、脚本文件名命名规范
Linux系统区分英文字母大小写,命令目录和命名文件的规则是一样的,除非特别需要都要使用小写字母。
1)文件名的字符包括:字母 数字 点 下划线 连字符 (问号 星号 空格 货币符 括号 )少用。
2)文件脚本名的规范:不以数字开头
3)脚本文件的命名,尽量使用英文单词、词组或断句的缩写,以方便管理脚本,起到见文生意的效果。
4)由于脚本文件会被不断完善,所以脚本可能会被添加新的功能或修改某些不足,我们定义脚本的格式如下:脚本作用.主版本好.修改次数.shell类型
5)为了区别不同的脚本,在定义名称的时候,给脚本加上相应的扩展名以区分不同脚本使用的shell。常用的有sh bash ksh
8、变量命名规范
在linux系统中,变量的种类有环境变量、本地变量。位置变量、特殊变量。通常我们根据变量的存活范围分为两类:全局变量和局部变量。
1)全局变量:从定义开始,在整个脚本中都有普遍意义,变量的生命周期在变量定义时到脚本结束
变量名可以和数字和字母组成
使用Pascal命名法
名字尽量不使用缩写
名字可以由两个或三个单词组成,但通常不应该多于3个
不要使用下划线字符
2)局部变量:在脚本代码中的部分代码片段有特定的意义,虽然他的生存周期也是从定义变量开始到脚本结束。在流程控制中常用
变量名可以由数字和字母组成
变量名采用全部英文符小写的方式
变量名称尽量使用缩写,最好不要超过6个字符
3)变量使用规范
在shell中变量的引用,通常使用”$变量名”的方式进行引用,然而在脚本中,常常需要将变量值和字符串混合输出,结果导致输出的结果不符合实际的需求,所以统一定义对变量的引用采用以下的引用方式${变量名}
9、脚本代码注释规范
良好的脚本代码注释习惯可以大大增加脚本的可读性。为读懂脚本,修改脚本提供了快捷的途径。
脚本代码注释可以使用#和分号两种方式进行注释,#一般用于描述性的注释,旨在说明代码的作用或怎么使用,而分号通常用于示例性的注释,特别是在一些配置文件中常常会用到。
10、引用符号使用规范
Shell中有三种引用符号:双引号、单引号和反引号
尽量少用单引号,对一个字符串需要进行多个特殊字符进行屏蔽特殊含义时才使用单引号;
对特殊字符进行屏蔽特殊含义时,使用反斜线进行屏蔽
使用单引号屏蔽字符时,单引号内一般不使用其他引用符号,除非是打印特殊符号本身
使用反引号进行执行一个shell命令时,反引号一般加其他引用符号,除非需要进行屏蔽特殊字符时才使用反斜线和单引号。
11、脚本函数定义规范
在shell脚本编程,通常把特定功能模块写成函数,可以在多个脚本中调用,为了区别变量名和函数名的不同,对函数名做如下定义:
变量名可以由数字和字母组成
【Shell脚本编程系列】Shell脚本开发的习惯和规范的更多相关文章
- shell编程系列1--shell脚本中的变量替换
shell编程系列1--shell脚本中的变量替换 变量替换总结: .${变量#匹配规则} # 从头开始匹配,最短删除 .${变量##匹配规则} # 从头开始匹配,最长删除(贪婪模式) .${变量%匹 ...
- (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单
原文 (C#)Windows Shell 外壳编程系列7 - ContextMenu 注册文件右键菜单 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windo ...
- (C#)Windows Shell 外壳编程系列8 - 同后缀名不同图标?
原文 (C#)Windows Shell 外壳编程系列8 - 同后缀名不同图标? (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳 ...
- (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
原文 (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows She ...
- (C#)Windows Shell 外壳编程系列6 - 执行
原文(C#)Windows Shell 外壳编程系列6 - 执行 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列5 - ...
- (C#)Windows Shell 外壳编程系列5 - 获取图标
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令 有 ...
- (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单 上一节说到如 ...
- (C#)Windows Shell 外壳编程系列2 - 解释,从“桌面”开始展开
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一篇:(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 让我们详细解释一下 Shell 编程中最基本 ...
- (C#)Windows Shell 外壳编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单
(本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 外壳编程系列2 - 解释,从“桌面”开始展开 这里解释上一节中获取名称的方法 GetD ...
随机推荐
- 多媒体开发之ftp---一个很现实的需求把ftp转换成rtmp协议做点播
http://www.dy2018.com/i/96131.html# http://www.hdpfans.com/thread-15684-1-1.html ftp://xc:xc@dz.dl12 ...
- Python 判断文件是否存在的三种方法
通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...
- node,npm的安装
1. 在node的官网下载 2.安装node 3. 4.进入项目根目录,安装依赖:```npm install 如:npm install -g cnpm --registry=https://reg ...
- Java基础--深克隆补充
深克隆文章很多,这里推荐Java提高篇--对象克隆(复制). 以上文章条理清晰,一目了然,但最近在项目中碰到的实际问题是,所要克隆的对象是加上子类父类共计207个,无论用上述两种方式的哪一种,都要一一 ...
- 如何解析oracle执行计划
要执行任何SQL语句,Oracle 必须推导出一个“执行计划”.查询的执行计划是 Oracle 将如何实现数据的检索,以满足给定 SQL 语句的描述.它只不过是其中包含的步骤及它们之间关系的顺序树.执 ...
- 自动批改android模拟器的imei的小程序 和 下载各个版本SDK Tools及ADT
ADT 22.6.0版本的下载路径是:http://dl.google.com/android/ADT-22.6.0.zip ADT22.6.1版本的下载路径是:http://dl.google.co ...
- Android学习之——ListView
背景知识 ListView在Android应用中使用非常广泛,手机上必备的微博.网易新闻等,都使用了ListView.
- 本地存储(LocalStorage、SessionStorage、Web SQL Database、Indexed DB)
https://www.cnblogs.com/SeeYouBug/p/6127001.html https://blog.csdn.net/inter_peng/article/details/49 ...
- 在Visual Stdio 2012中编译执行JM18.6的方法
JM是H.264编码的官方实现,与X264开源实现相比,JM的实现比較完整,代码更加规范.并且同一时候提供了编码和解码过程.便于对照分析.可是JM的最大缺点是效率比X264低.因此.非常多应用都基于X ...
- 5 -- Hibernate的基本用法 --1 2 基本映射方式
ORM工具提供了持久化类和数据表之间的映射关系.实际上,所有的ORM工具大致上都遵循相同的映射思路,ORM基本映射有如下几条映射关系: ⊙ 数据表映射类 : 持久化类被映射到一个数据表.程序使用这个持 ...