【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 ...
随机推荐
- tophat-fusion 鉴定融合基因
tophat-fusion 是一款利用RNA_seq 数据鉴定融合基因的工具,官网链接如下: http://ccb.jhu.edu/software/tophat/fusion_index.shtml ...
- 文本框中的回车处理 js
<input id="txtOrderID" onkeypress="getKey(event)" /> <button onclick=&q ...
- The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead [duplicate]
From: http://stackoverflow.com/questions/13944956/the-mysql-extension-is-deprecated-and-will-be-remo ...
- 4 Flask 命令行模式
preface 在Django中我们可以使用python manage.py shell进入 shell下面调试,在flask下面我们需要安装第三方模块来进入shell模式,安装的模块为Flask-S ...
- Python中使用MongoEngine
pymongo来操作MongoDB数据库,但是直接把对于数据库的操作代码都写在脚本中,这会让应用的代码耦合性太强,而且不利于代码的优化管理 一般应用都是使用MVC框架来设计的,为了更好地维持MVC结构 ...
- 【MySQL】[Err] [Imp] 2006 - MySQL server has gone away .
wait_timeout= interactive_timeout = max_allowed_packet=10M my.ini 后面增加 就可以解决
- bash脚本 while语法
基本语法(比较常见的两种形式): 只要特定条件为真,”while” 语句就会执行 while [ condition ] do command1 command2 command3 done 或者 w ...
- Java适配器模式的简单应用
对于刚从工厂生产出来的商品,有些功能并不能完全满足用户的需要.因此,用户通常会对其进行一定的改装工作.编写程序为普通的汽车增加GPS定位功能,借此演示适配器模式的用法. 思路分析: 这个问题的需求是, ...
- Binary Numbers
时空限制 Time Limit:1000ms Resident Memory Limit:1024KB Output Limit:1024B 题目内容 Given a positive integer ...
- grid网格的流动grid-auto-flow属性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...