Chinaunix首页 | 论坛 | 博客

14#

  • 博客访问: 176953
  • 博文数量: 48
  • 博客积分: 1910
  • 博客等级: 上尉
  • 技术积分: 445
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-27 10:38
文章存档

2012年(8)

2011年(2)

2010年(13)

2009年(25)

我的朋友

分类: Python/Ruby

2009-09-20 00:02:14

SHELL编写原则:

 

1、 要有注释

2、 要有日志

3、 需告警

4、 避免硬编码情况严重(可维护性差)

5、 避免代码可读性差

 

- - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - -

 

以下主要围绕4、5展开讨论和阐述:

 

1).将系统功能和实现细节作为不同文件

 

    只需编辑主脚本就可以升级或增强系统功能,同时将实现细节保留在主文件之外

    实现方式:在 bash中,"source"命令从文件中读入 bash语句,然后执行它们,就好象它们直接出现在 "source"命令所在的文件中一样

   

 

    2).使用函数

 

2.1) 添加脚本功能性

 

     提高整体script的执行效能外(因为已被加载),

     还可以节省许多重复的代码...

 

2.2) 使代码模块化

 

     当遇到些非标准的动作时,可以在函数中分成主函数,和一个新函数,新函数只包含合理的缺省操作。

     当有非标准动作时,在细节文件中覆盖新函数,使其包含非标准的动作

     说明:在执行(source 细节文件前定义新函数,如果细节文件有同名新函数,将覆盖前面定义的缺省版本。如果没有,则使用缺省新函数。所以细节文件要在函数定义之后source;

 

2.3) 函数注意要点

 

       在每个函数的第一行,显式 "cd"到想要的目录,因为,随着代码变得越来越模块化而不是线形化,出现疏忽而在错误的当前工作目录中执行函数的可能性也变大。"cd"命令显式地使我们处于正确的位置,并防止以后出现错误 -这是重要的步骤,特别是在函数中删除文件时更是如此。

 

 then …..  just try :)


关于脚本的建议:
1. 代码应分三部分:环境变量,自定义变量,函数,主程序
2. 给变量和函数起一些有意义的名字,适当注释
3. 变量多时,可独立成配置文件
4. 特定功能,用函数实现
5. 函数多时,可独立成函数库
6. 酌情记录日志
7. 严重错误时要告警
8. 运行前, bash -n 检查语法
9. 用bash -x 观察、调试程序

   10.对于自动脚本, 增加手工输入参数的功能 

 

阅读(1314) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~