|
|
|
|
移动端

2.6.3 Shell脚本开发的基本规范及习惯

《跟老男孩学Linux运维:Shell编程实战》本书是一本较完整的Shell编程实战型图书,并非大而全,但处处可以体现实战二字,大多内容取于企业实战,并结合老男孩十几年的运维工作和教学工作进行了梳理。本节为大家介绍Shell脚本开发的基本规范及习惯。

作者:老男孩来源:机械工业出版社|2017-04-20 18:41

开发者盛宴来袭!7月28日51CTO首届开发者大赛决赛带来技术创新分享

2.6.3 Shell脚本开发的基本规范及习惯

Shell脚本的开发规范及习惯非常重要,虽然这些规范不是必须要遵守的,但有了好的规范和习惯,可以大大提升开发效率,并能在后期降低对脚本的维护成本。当多人协作开发时,大家有一个互相遵守的规范就显得更重要了。即使只是一个人开发,最好也采取一套固定的规范,这样脚本将会更易读、更易于后期维护,最重要的是要让自己养成一个一出手就很专业和规范的习惯。下面来看看有哪些规范,这些规范在第14章也会提及,以便于大家进一步巩固。

1)Shell脚本的第一行是指定脚本解释器,通常为:

  1. #!/bin/bash  
  2. 或  
  3. #!/bin/sh 

2)Shell脚本的开头会加版本、版权等信息:

  1. # Date:    16:29 2012-3-30  
  2. # Author:  Created by oldboy  
  3. # Blog:http://oldboy.blog.51cto.com  
  4. # Description:This scripts function is.....  
  5. # Version: 1.1 

说明: 以上两点在Linux系统场景中不是必需的,只属于优秀规范和习惯,第16章有自动加载此内容的方法,读者可以做进一步了解。

可修改“~/.vimrc”配置文件配置vim编辑文件时自动加上以上信息的功能。

3)在Shell脚本中尽量不用中文(不限于注释)。

尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰。如果非要加中文,请根据自身的客户端对系统进行字符集调整,如:export LANG="zh_CN.UTF-8",并在脚本中,重新定义字符集设置,和系统保持一致。

4)Shell脚本的命名应以.sh为扩展名。

例如:script-name.sh

5)Shell脚本应存放在固定的路径下。

例如:/server/scripts

以下则是Shell脚本代码书写的良好习惯。

1)成对的符号应尽量一次性写出来,然后退格在符号里增加内容,以防止遗漏。这些成对的符号包括:

  1. {}、[]、''、``、"" 

说明: 这部分也可以配置.vimrc实现自动添加,但是老男孩不推荐这样做,因为养成良好的习惯很重要。

2)中括号([])两端至少要有1个空格,因此,键入中括号时即可留出空格[ ],然后再退格键入中间的内容,并确保两端都至少有一个空格,即先键入一对中括号,然后退1格,输入两个空格,再退1格,双中括号([[]])的写法也是如此。

3)对于流程控制语句,应一次性将格式写完,再添加内容。

比如,一次性完成if语句的格式,应为:

  1. if 条件内容  
  2.   then  
  3.     内容  
  4. fi 

一次性完成for循环语句的格式,应为:

  1. for  
  2. do  
  3.     内容  
  4. done 

提示: while和until,case等语句也是一样。

4)通过缩进让代码更易读,比如:

  1. if条件内容  
  2.   then  
  3.     内容  
  4. fi 

5)对于常规变量的字符串定义变量值应加双引号,并且等号前后不能有空格,需要强引用的(指所见即所得的字符引用),则用单引号(' '),如果是命令的引用,则用反引号(` `)。例如:

  1. OLDBOY_FILE="test.txt" 

6)脚本中的单引号、双引号及反引号必须为英文状态下的符号,其实所有的Linux字符及符号都应该是英文状态下的符号,这点需要特别注意。

说明: 好的习惯可以让我们避免很多不必要的麻烦,提升工作效率。

有关Shell开发规范及习惯的更多内容,感兴趣的读者可参考本书的第14章。很多开发习惯也可以通过配置vim的功能来实现,例如实现自动缩进、自动补全成对符号、自动加入起始解释器及版权信息等,这部分的知识可参考本书第16章。对于一些开发规范和习惯,在新手入门学习期间,我们不建议将其搞得太傻瓜化、智能化,这会让我们产生惰性,所以有关Shell的开发规范及习惯的知识放在第14章来讲解,有关搭建高效的Shell开发环境的知识放在第16章讲解!

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

勇敢者的新世界

这是一个最坏的年代,J2EE Web开发技术已经迟滞多年;这是一个最好的年代,J2EE Web开发技术的新变革留给勇于创新的人! 采用Apusic Opera...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊