欢迎来到天天文库
浏览记录
ID:19390902
大小:121.00 KB
页数:10页
时间:2018-10-01
《shell编程规范》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、shell编程规范Shell编程规范v1.0.02021-10-23目录一、命名规范21、版本和运行参数22、变量命名23、函数命名34、脚本(模块)命名35、临时文件的命名3二、代码风格41、代码框架42、函数43、条件语句与循环44、缩进5三、注释规范51、文件/模块说明52、重要函数说明63、其它6四、日志规范6五、接口文件规范7六、配置规范71、配置文件72、配置项的检查8七、报警规范8八、其它细节8九、线上实例补充10第10页shell编程规范一、命名规范1、版本和运行参数1)脚本开始之前
2、以注释形式说明版本号;(推荐)2)如果调用其他工具,还需说明工具的版本号;(推荐)3)为脚本添加必须的运行参数,类似于C程序的运行参数,可使用getopt的方式取得运行参数值,如基本的参数有:-v-版本号;-h–帮助信息;(推荐)2、变量命名1)变量命名要前后统一,建议使用全部大写字母,如APACHE_ERR_NUM;语义要清晰,能够正确表达变量的含义,过长的英文单词可采用前几个字符代替。多个单词连接使用“_”号连接,引用时,必须以${APACHE_ERR_NUM}方式引用;2)避免无含义字符或数字
3、:例如下面的数字22,并不知道其确切含义.COUNT=`grepkeywordsfile`if[${COUNT}–ne22]thenDoSomethingfi3)全局变量和局部变量:i.如需要使用全局变量,则在变量加前缀g,如g_WORK_DIR,在变量使用时,使用{}将其括起,即${VARIABLE}ii.局部变量的使用:脚本在定义在一个函数(function)中的变量我们称之为局部变量,必须要以local方式进行声明,使之只在本函数中作用有效,以免造成在函数中的命名与程序中变量重名,造成对程序中
4、正常变量的不正常操作。如functionTestFunc(){localifor((i=0;i5、前后缀,如后缀为Max则为最大值,Min为最小值,前缀Is为判断型函数,Get则为取值函数,这样有益于对函数的返回理解更清晰。2)注意在使用单词缩写时,也使用首字母大写,如GetHtmlContent而并非GetHTMLContent,这样有利于命名规则的统一。2、脚本(模块)命名1)Shell脚本使用统一后缀:.sh2)所有模块的启动和停止脚本必须统一命名为start_{模块名}.sh和stop_{模块名}.sh3)模块(及其脚本和二进制程序)命名应该代表其特性和功能,禁止使用个人名字缩写等形式命6、名。4)模块中的脚本和二进制程序命名禁止和其他脚本和二进制程序重名。3、临时文件的命名尽量避免临时文件,如果一定要使用临时文件,请使用脚本的pid作为后缀,并在脚本结束时清除临时文件。例如:PID=$$TMP_FILE=”tmp_keywords.”${PID}grepkeywordsfiles>${TMP_FILE}.....#endrm${TMP_FILE}第10页shell编程规范一、代码风格1、代码框架1)解释器声明最好为#!/bin/sh(推荐),如果不是再加入crontab计划任务时要格7、外注意执行环境。配置文件/库函数的引用sourcefoo_conf.sh2)主过程只实现程序主干,功能实现应该封装在子函数中;3)对于能独立执行的脚本需要有usage和version函数,可以输出脚本用法和版本信息(推荐)2、函数1)函数定义时在函数名前加上function保留字2)显示函数返回:在函数的每个分支在函数的每个分支都包含显示的return语句,并跟上返回值。即使是不关心返回值的函数,也可能在后续调用时无意的去判断它的返回值并进行一系列动作,这种不必要的麻烦我们在一开始就应该注意,显示的8、写return语句并不会带来多少负担,相反的,它能让函数逻辑更加清晰和严谨。3、条件语句与循环1)在使用条件语句及循环时,尽量使用统一格式,而不是使用“;”分隔;if[-dabc]thenDosomethingfiwhile[1]doDosomethingdoneforiin*doDosomethingDone第10页shell编程规范1)尽量使用每一行一条语句,而不是使用”;”将多个语句隔开。尽可能多的判断操作是否成功,并对其进行相应处理,如DoSth&&DoRig
5、前后缀,如后缀为Max则为最大值,Min为最小值,前缀Is为判断型函数,Get则为取值函数,这样有益于对函数的返回理解更清晰。2)注意在使用单词缩写时,也使用首字母大写,如GetHtmlContent而并非GetHTMLContent,这样有利于命名规则的统一。2、脚本(模块)命名1)Shell脚本使用统一后缀:.sh2)所有模块的启动和停止脚本必须统一命名为start_{模块名}.sh和stop_{模块名}.sh3)模块(及其脚本和二进制程序)命名应该代表其特性和功能,禁止使用个人名字缩写等形式命
6、名。4)模块中的脚本和二进制程序命名禁止和其他脚本和二进制程序重名。3、临时文件的命名尽量避免临时文件,如果一定要使用临时文件,请使用脚本的pid作为后缀,并在脚本结束时清除临时文件。例如:PID=$$TMP_FILE=”tmp_keywords.”${PID}grepkeywordsfiles>${TMP_FILE}.....#endrm${TMP_FILE}第10页shell编程规范一、代码风格1、代码框架1)解释器声明最好为#!/bin/sh(推荐),如果不是再加入crontab计划任务时要格
7、外注意执行环境。配置文件/库函数的引用sourcefoo_conf.sh2)主过程只实现程序主干,功能实现应该封装在子函数中;3)对于能独立执行的脚本需要有usage和version函数,可以输出脚本用法和版本信息(推荐)2、函数1)函数定义时在函数名前加上function保留字2)显示函数返回:在函数的每个分支在函数的每个分支都包含显示的return语句,并跟上返回值。即使是不关心返回值的函数,也可能在后续调用时无意的去判断它的返回值并进行一系列动作,这种不必要的麻烦我们在一开始就应该注意,显示的
8、写return语句并不会带来多少负担,相反的,它能让函数逻辑更加清晰和严谨。3、条件语句与循环1)在使用条件语句及循环时,尽量使用统一格式,而不是使用“;”分隔;if[-dabc]thenDosomethingfiwhile[1]doDosomethingdoneforiin*doDosomethingDone第10页shell编程规范1)尽量使用每一行一条语句,而不是使用”;”将多个语句隔开。尽可能多的判断操作是否成功,并对其进行相应处理,如DoSth&&DoRig
此文档下载收益归作者所有