做为一个每天与Linux打交道,并以此为生的Linux运维工程师,最经常使用的工具性语言恐怕就是shell了, 而对于大多数的Linux和一些类Unix而言,其默认的shell就是Bash。使用Bash通常有两种场景,一是直接使用命令,二是,将这些命令组合起来,加上逻辑判断、循环、加上异常文本处理工具、加上函数构成shell脚本。用于自动、快速的执行某些批量操做。shell
为达到某个目的,Bash每每有多种实现方法,好比在脚本中 反引号 ` ` 与$() 是相同的, 这种特性提供方便的同时也为代码的复杂度和可读性带来必定的影响,Bash没有所谓的规范,只有所谓不一样的使用习惯,以下是我平时使用时的一些积累,同时也参考了许多优秀的博客,记录以下,目的呢就是单纯的与你们分享,毕竟互联网环境下就是互相分享,彼此借鉴,在原有的基础的创新,最重要的不是人云亦云,而是真正领悟以后的相互点评、思想碰撞。bash
1.添加注释运维
这个不用过多解释,不管哪一种语言这甚至都是必须的,目的是加强可读性,节约他人和之后的本身熟悉脚本的时间。函数
2.构建一种一致的格式工具
我这里主要指的是缩进 1-- 使用空格(2个或者4个,我通常用4个)取代tab。 2--代码分层要明确,属于一级的要对其,这一点Python作的很好,强制要求的。这样写出来的shell本身看着心情也不一样。编码
3.编码习惯上的一些注意spa
这里纯属我的习惯,但以下这样作的好处是使代码风格更统一,目的仍是提升可读性code
1--使用花括号 { } 。 用花括号括起来全部的变量名。好比 ${name} 而不是 $name orm
2--计算表达式中用$() 代替反引号 `` 这样易于阅读。blog
4.比较变量的值时建议采用双引号将变量括起来。以下:
这样写的好处至少有: 当变量为空时依然能够执行。 当变量中有特殊字符时(接收用户输入的状况下)依然能够执行。
#!/bin/bash if [ ${name} == "wencheng" ];then echo "hello" fi #####推荐使用以下 #!/bin/bash if [ "${name}" == "wencheng" ];then echo "hello" fi #
5.异常退出时要使用异常退出代码 如: exit 500 。这样在此脚本被其余调用时可以更好的判断是否执行完成,如若错误也能判断错误类型。
6.尽可能避免单行代码过长的问题。 这样在不一样的终端,都可以正常的显示。
7.避免命令的复杂性,这个是仁者见仁智者见智的问题,有的时候你是发现不了本身代码的臃肿程度的。好比:
grep cut 等组合使用达到的效果就不如 awk 来的直接。
借用一个例子:
检索用户ID为502的用户: (第三种会比较的高效)
#一。 cat /etc/passwd | grep 502 |cut -d: -f1 #二。 grep 502 /etc/passwd |awk -F":" '{print $1}' #三。 awk -F ":" '$3 == 502{print $1}' /etc/passwd
先总结这些,欢迎指正。
另外附上控制输出终端颜色的方法 : https://misc.flogisoft.com/bash/tip_colors_and_formatting