shell编程守则

* 1 检查和过滤无效参数,以及多余的字符和参数;

* 2 程序头部应标明程序运行的依赖关系,包括:依赖的软件/命令名称及版本号需求,
硬件平台等;

* 3 可能变更的、不确定的文件路径和文件名称,尽可能定义为变量(variable),方便移
植和维护;

* 4 必要时记录运行日志(log),并在日志文件头部记录程序名称($0),程序参数($*),
用户名(whoami),日期时间(date)等信息。必要时还可记录程序结束时的时间;

* 5 调试代码和临时代码,应用调试开关(switch)控制开启(on)和关闭(off),方便调试
输出和关闭;

* 6 程序中记录必要的注释信息;

* 7 检查要执行、读取、修改的程序和文件是否存在或已安装,是否有执行、可读、修改
权限;

* 8 创建新文件前,先确认文件所在目录是否存在,必要时手动创建目录;

* 9 用命令操作某个文件时,尽可能先复制到临时文件,完成编辑后再复制回目标文件,
降低可能出现的错误对原始文件的破坏。特别是修改配置文件内部参数的时候;

* 10 条件判断(if/case)和循环(for/while/until)时,及时跳出(break)语句和退出
(exit)程序,并记录返回值;

* 11 条件判断时,详细分析实际运行中最常出现,最多出现的情形,优先判断和运行,提
升程序效率和性能;

* 12 多条件、多数值的语句,尽可能改写为数组(array),条件语句,循环语句,结构体
(construction)等,建立数据骨架,方便维护和扩展;

* 13 修改或查看配置文件内的参数值时,先检查参数字符串(string)和数值(value)是否
存在或有效;

* 14 预留和待处理(todo)的函数(function)和代码,模糊(fuzzy)代码,待修正(fixme)
代码和缺陷(bug),做好必要的起止标记(begin/end);

* 15 考虑更多的非标准情况和意外情况,并提前做好预处理。如文件编码不是标准的
ASCII编码,内存/硬盘/数据卡读取故障,死机/停电,程序意外退出/强行退出或中断等
等,可能对文件造成的破坏,进行更多的容错设计和纠错设计,并给出必要的错误输出,
利于判断和调试;

* 16 一切皆有可能;

* 17 合理共用函数、合并代码,标准化流程;

* 18 善用双引号(");

* 19 善用参数移位(shift);

* 20 调试(debug)前先删除可能影响调试结果的残留文件,多样例、多调试;

* 21 多看案例,领悟流程和编程逻辑;多运行;

* 22 三个码农,互相沟通!

原文链接:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=402560

原文地址:https://www.cnblogs.com/zhaofei/p/3408874.html