- 浏览: 814276 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuhanwm910731:
我现在需要实现复选(非级联选择)的树形下拉菜单,麻烦发给我一份 ...
extjs3.X支持树型的下拉控件 -
shine1200:
“所以咱们现在设置的虚拟路径“/message/upload/ ...
weblogic虚拟路径的配置和使用(2) -
icefireforest:
Fangrn 写道jx_dream 写道楼主,我最近在做树形下 ...
extjs3.X支持树型的下拉控件 -
cloudfile:
谢谢分享!
c++库c#调用开发时需要注意的一点 -
xuweilinbegin:
我也要一份哦:xuweilin15353@163.com,谢谢 ...
extjs3.X支持树型的下拉控件
随着写的SHELL程序越来越多,发现自己每次写都有不同的习惯或者定义了不同的东西,变量名定义得不一样,整个程序缩进不统一,没有注释等问题,等我回过头看这些程序的时候发现很麻烦。所以写了个shell代码规范。
1.1 目的
定义Shell脚本命名和编码规范,统一管理Shell脚本,便于自己和别人查看,提高代码书写速度和美观,暂时只对自己进行约束,其它人只供参考。
1.2 开发工具
shell脚本是个文件,没有开发环境,FC4图形环境下,可用gedit、vi、vim、joe等,推荐使用vim因为这个最通用,他的功能同样 是很强大,如果想在图形化下可以用gvim,并将环境设置为sh高亮显示,方法:1)cp /etc/vim/vimrc ~/.vimrc 2) vim ~/.vimrc 去掉”syntax on,并且;Windows下,可用ultraedit。文件保存时,有汉字提示的Shell脚本文件,文件保存时,字符编码必须为 GB18030/GBK/GB2132 (UTF-8) 三种格式之一。
2 对象命名规范
2.1 命名约定
1.本文档的命名约定是系统配置文件、脚本文件;
2.文件名、变量名、函数名不超过20个字符;
3.命名只能使用英文字母,数字和下划线,只有一个英文单词时使用全拼,有多个单词时,使用下划线分隔,长度较长时,可以取单词前3~4个字母。
4.文件名全部以小写命名,不能大小写混用(通过U盘交换文件时,大小写可能会丢失,即:大写文件名可能会全部变成小写文件名);
5.避免使用Linux的保留字如true、关键字如PWD等(见附表);
6.从配置文件导出配置时,要注意过滤空行和注释
2.2代码开头约定
1、第一行一般为调用使用的语言
2、下面要有这个程序名,避免更改文件名为无法找到正确的文件
3、版本号
4、更改后的时间
5、作者相关信息
6、该程序的作用,及注意事项
7、版权与是否开放共享GNU说明
8、最后是各版本的更新简要说明
如下面的例子:
#!/bin/bash # ------------------------------------------------------------------------------- # Filename: check_mem.sh # Revision: 1.1 # Date: 2009/02/10 # Author: katy # Email: longkaty#sina.com # Website: www.lazysa.com # Description: Plugin to monitor the memory of the system # Notes: This plugin uses the "" command # ------------------------------------------------------------------------------- # Copyright: 2009 (c) Ajian # License: GPL # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # you should have received a copy of the GNU General Public License # along with this program (or with Nagios); # # Credits go to Ethan Galstad for coding Nagios # If any changes are made to this script, please mail me a copy of the changes # ------------------------------------------------------------------------------- #Version 1.0 #The first one , can monitor the system memory #Version 1.1 #Modify the method of the script ,more fast2.3
由于Shell没有很好的编辑环境,所以,建议用四个空格为基数进行缩进,好处在不同的环境下TAB可能代表的空格数不同,造成代码的错乱。用TAB他的优点是速度快方便,可以在编辑的时候也用TAB,但需要转换。
可以在更改编辑器,Windows的就不说了,主要是VIM
:set softtabstop=4
注意不要使用 :set tabstop=4 上面那个是同时把这一个TAB转换为四个空格,而这一条是定义TAB为四个空格,如果到其它编辑器上就会看到默认8个空格的情况,那就会不美观了。
另外将原有的TAB转换为空格,:retab
如果想让刚才的配置永久生效需要改动vim的配置文件 vim ~/.vimrc,更多详细的有用的配置见“VIM配置总结”
2.4 页宽
每行不要超过80字,如果超出,建议用“”折行,有管道的命令行除外。
2.5 环境变量
变量:全部是大写字母
变量引用:全部以变量名加双引号引用,如”$TERMTYPE”,或“${TERMTYPE}”,如果变量类型是数值型不引用,如:
如果需要从配置文件导出变量,则在变量前加一大写字母,以识别导出变量与自定义环境变量的区别,如:
变量值的引用尽量以$开头,如$(ls inst_*.sh),避免使用`ls inst_*。sh`
循环控制变量可以命名为单个字母, 比如 i、j等。 也可以是更有意义的名称, 比如 UserIndex。
环境变量和全局变量 在脚本开头定义。
函数中使用较多的文件,以环境变量的形式在文件开头定义,仅函数中使用的变量在函数开头定义
2.6 函数
函数以动名词形式存储,且第二个单词首字母要大写,如updateConfig()
每个函数控制在50-100行,超出行数建议分成两个函数
多次反复调用的程序最好分成函数,可以简化程序,使程序条理更清楚
2.7 语句
if 语句
if/then/else 语句中最可能被执行的部分应该放在 then 子句中, 不太可能被执行的部分应该放在 else 子句中。
如果可能, 尽量不要使用一连串的 if 语句, 而应该以 case 语句替代。
不要使 if 语句嵌套超过5层以上, 尽量以更清楚的代码替代。
case 语句
概要
case 语句中的单个子句应该以 case 常数的数字顺序或字母顺序排列。 子句中的执行语句应该尽量保持简单, 一般不要超过4到5行代码。 如果执行语句过于复杂, 应该将它放置在独立的函数中。
case 语句的 *) 子句应该只在正常的默认情况或检测到错误的情况下使用。
格式
case 语句遵循同样的缩进和命名约定。
while 语句
使用 Exit 过程退出 while 循环是不好的; 如果可能, 应该只使用循环条件来结束循环。
while 循环的所有初始化代码应该紧贴在进入 while 循环之前, 不要被其他无关语句分隔开。
循环结束后的处理应该紧跟在循环之后。
for 语句
如果需要执行确定次数的增量循环, 应该用 for 语句替代 while 语句。
2.8 信号捕捉
如果在进行重要配置修改时,应捕捉用户按键,如果用户按下Ctrl+C等重要操作终止程序,则调用回退程序,如:
2.9 关于注释
程序头应加注版本与功能说明的注释。但程序第一行不能汉字。
程序体中应包含必要的注释,注释说明如下:
单行注释,可以放在代码行的尾部或代码行的上部;
多行注释,用于注解复杂的功能说明,可以放在程序体中,也可以放在代码块的开始部分
代码修改时,对修改的内容要加必要版本注释及功能说明。
发表评论
-
提供IT系统运维支持、系统优化方案
2012-10-26 14:46 6提供IT系统运维支持、系统优化方案,有多个运维实施经验。 ... -
搭建mpi并行运算中遇到的问题与解决方案
2010-11-28 18:21 4858搭建mpi并行运算中遇到的问题与解决方案 1,[roo ... -
linux bash(2)
2010-11-10 22:29 1644十二、输入输出重定 ... -
linux bash(1)
2010-11-10 22:22 1487一、LINUX操作系统的基本结构 1 kernel、 ... -
LINUX系统高级应用
2010-11-10 16:18 1274【过滤大log文件】 #!/bin/bash ... -
【转载】ossec主机入侵检查系统架设
2010-09-30 09:51 1312一.OSSEC简要介绍: OSSEC 是一款开源的入 ... -
Linux多路径的使用及介绍
2010-09-25 08:37 1679多路径(multi-path)软件的介绍 普通的电脑主机都是 ... -
服务器出现broken pipe ,connection reset解决方法
2010-08-24 17:34 2920linux下webloigc经常出现broken pipe ... -
ELF文件病毒的分析和编写(转)
2010-08-11 09:46 3108这个文章是从网上搜来的,转来转去也不知道睡是原版的了,所以很抱 ... -
linux下容量不同硬盘的复制
2010-07-28 19:44 2405可以用parted magic光盘来实现 1.用part ... -
Linux 如何加快 dd 命令备份的速度呢
2010-07-28 19:36 2204增加块大小 dd if=.. of=.. bs=128k -
Linux中重定向及管道
2010-07-28 08:44 12121重定向 1.1 重定向符号 > ... -
提供j2ee中间件优化方案和实施
2010-05-11 09:04 384提供j2ee中间件安装优化方案和实施,提供oracle等数据库 ... -
从bind安装到配置全过程.所有linux平台都支持,带注释
2010-04-26 22:11 2521从安装到配置.不会架设DNS的人来.不是RPM安装的. ... -
apache前台代理分发 weblogic集群报错:错误模块 libhttpd.dll,错误地址 0x0001c0a2 解析以及解决方案
2010-04-14 22:28 34922003的报错:错误应用 程序 Apache.exe,版本 ... -
apache 启动httpd.exe 报错 Could not reliably determine the server's fully qualified
2010-04-14 20:35 2373前言:apache虽然能运行,但是看见error.log中 ... -
AIX下比较两个目录文件并同步数据,供参考
2010-03-25 13:06 1780#!/usr/bin/ksh # Compare the t ... -
check 系统账号密码是否过期shell脚本
2010-03-25 12:37 1411自己写的check aix系统用户密码是否过期的shell 脚 ... -
apache日志自动切割
2010-03-24 09:36 2200前几天给国家地震台 ... -
Remounting filesystem read-only硬盘只读,悲剧
2010-03-02 16:36 11571Dec 6 00:06:36 backup kernel: ...
相关推荐
标题“编写Shell脚本”表明我们要深入探讨这一主题,而描述则强调了Shell作为用户与内核交互的重要角色。 首先,我们需要了解什么是Shell。Shell是一个命令行解释器,它允许用户通过文本命令来控制操作系统。在...
编写规范、易于理解的Shell脚本不仅有助于提高工作效率,而且方便日后的维护和团队协作。本笔记将详细阐述Shell脚本的编写规范和良好习惯。 1. 脚本开头的“#!”字符 在Shell脚本中,“#!”被称为幻数,它位于脚本...
Shell 编程规范是指在编写 Shell 程序时,为了提高代码的可读性、可维护性和可重用性所制定的规则和约定。以下是对 Shell 编程规范的详细解释: 一、 命名规范 命名规范是 Shell 编程中非常重要的一部分。好的...
### Shell脚本编写知识点概述 #### 一、Shell脚本的概念 在Linux系统中,**Shell脚本**是一种重要的编程工具,它本质上是一系列Linux命令的集合,这些命令被存储在一个具有执行权限的文本文件中。Shell脚本的编写...
### 如何编写Shell脚本详解 #### 一、Shell脚本简介 Shell脚本是一种用于自动化执行一系列命令的脚本语言。它广泛应用于系统管理任务、数据处理以及其他各种需要通过命令行进行操作的场景中。Shell脚本可以利用...
在本讲义中,我们将深入探讨shell脚本的基本概念、规范以及核心语法。 首先,我们来了解shell脚本的基础知识。Shell脚本实际上是一种解释型的脚本语言,它不像编译型语言那样需要先编译再运行。用户可以直接在终端...
/bin/bash,用于指定当前 Shell 脚本文件采用 bash 解析器运行脚本代码。注释格式单行注释为 #注释内容,多行注释为 :! #注释内容 1 #注释内容 2 ! 5. 脚本文件执行方式 有三种方式执行脚本文件:sh 解析器执行方式...
8. 脚本编写最佳实践:掌握Shell脚本编写中的最佳实践和规范,例如代码风格、注释、文档编写等。 9. 处理脚本错误:学习如何处理脚本执行中可能出现的错误和异常,以及如何优雅地恢复和记录错误信息。 10. 脚本...
要编写Shell脚本,需要创建一个文本文件,并在文件中编写一系列Shell命令。脚本通常以#!/bin/bash开头,表明脚本使用的是bash shell。执行Shell脚本需要先给脚本文件添加执行权限,使用命令chmod +x script.sh,然后...
在编写Shell脚本时,需要注意以下关键事项: 1. **shebang**:每个脚本的第一行应包含`#!/bin/bash`或相应的Shell路径,告诉系统使用哪个Shell来执行脚本。 2. **语法规范**:遵循所选Shell的语法规则,如命令分隔...
《shell编程规范》着重于编写清晰、可维护的Shell脚本,可能包含以下要点: 1. 编程风格:遵循最佳实践,如适当的缩进、注释和命名约定。 2. 错误处理和异常:如何优雅地处理错误,避免脚本意外终止。 3. 避免命令...
Shell编程规范是编写高效、可读性强且易于维护的Shell脚本的重要指南。这份文档包含了多个方面的内容,从命名规范到代码风格,再到注释、日志、接口和配置等多方面进行了详尽的阐述。 一、命名规范 1. 版本和运行...
在编写 Shell 脚本时,注意遵循良好的命名规范,避免使用特殊字符和空格,并确保变量名不以数字开头。此外,内部命令执行速度较快,因为它们是 Shell 的一部分,而外部命令则需要从磁盘加载。在需要提高效率时,可以...
C语言编写shell的好处在于,它可以更接近底层,理解操作系统的工作原理,同时也能提供更高的性能和灵活性。 这个项目的标签包括"shell"、"linux"、"C语言"和"操作系统",这表明源码主要关注以下几个方面的知识: 1...
10. **脚本最佳实践**:编写清晰的注释,良好的命名规范,合理使用空格和缩进,以及避免全局变量,都是提高脚本可读性和维护性的关键。 在【Private_Shell_Scripts】这个压缩包中,每个示例脚本可能涵盖了以上的一...
最后,了解如何编写Shell脚本的规范和最佳实践,比如使用有意义的变量名,注释代码,以及合理地组织脚本结构,将有助于提升脚本的质量和可维护性。 总之,“shell编程笔记.pdf”很可能包含了以上所有这些内容,是一...
3. **脚本编写**:课程会深入到编写Shell脚本的实践环节,包括编写可读性强、可维护的脚本,错误处理,以及如何使用shebang指定解释器。 4. **高级特性**:学习者将接触到正则表达式、数组、进程控制、文件描述符、...
理解这些基础知识是编写Shell脚本的基础。 3. **命令行参数**:脚本可以接收命令行参数,这些参数在脚本内部用$1, $2, ... $9表示,$0则代表脚本本身的名字。 4. **管道与重定向**:管道(|)可以将一个命令的输出...
创建Shell脚本需要遵循一定的规范,包括选择合适的编辑器、编写合适的代码、测试和调试等。 变量 变量是Shell脚本中的基本元素,用于存储和处理数据。变量可以分为本地变量和全局变量。本地变量只能在当前Shell...
Shell脚本是通过一系列预定义命令和语法编写的脚本文件,可以在Shell环境中执行。它们是实现自动化任务的重要工具,尤其适用于Linux和Unix环境。 - **创建脚本**:使用文本编辑器创建一个包含Shell命令的文件。 - *...