shell脚本的规范
1、脚本的解释器
shell脚本开头(第一行)会指出由哪个程序(解释器)来解释脚本中的内容。这一行必须在脚本顶端的第一行,如果不是第一行则为注释。不管写什么脚本最好养成好习惯,都加上解释器名称,例如:#!/bin/bash。”#!”又称为幻数
sh和bash的区别为:sh为bash的软链接,这里推荐用标准写法#!/bin/bash
下面是Linux中常用脚本语言开头的编码写法,不同语言脚本的开头一般都要加上如下相应语言的开头标识内容。
#!/bin/sh #!/bin/bash #!/usr/bin/awk #!/bin/sed #!/usr/bin/tcl #!/usr/bin/expect #!/usr/bin/perl #!/usr/bin/env python
注意:如果脚本的开头不指定解释器,那么脚本就会使用系统默认的解释器执行,这样在某些情况下就会出现错误,所以一定要养成良好的习惯,在脚本的第一行指定解释器。
2、脚本注释
在shell脚本中跟在”#”号后面的内容为注释,用来对脚本进行说明,注释部分不会被执行,仅仅是方便人们查看和理解脚本。必须要养成写注释的良好习惯,可以方便团队协作。同时也方便自己以后查看更加方便。
3、shell脚本的执行
当shell脚本以非交互式运行时,它会先查找环境变量ENV,该变量指定了一个环境文件(通常是.bashrc),然后从该环境变量文件开始执行,当读取了ENV文件后,shell才开始执行shell脚本中的内容。
shell脚本执行的三种方式,例如执行/root/install_httpd.sh:
a、bash脚本文件名(不需要执行权限即可执行)
例如:bash /root/install_httpd.sh
b、绝对路径/脚本文件名(需要执行权限)
例如:chmod +x /root/install_httpd.sh && /root/install_httpd.sh
c、source脚本文件名(需要执行权限)
例如:chmod +x /root/install_httpd.sh && source /root/install_httpd.sh
注意:在脚本文件中如果想调用另外的脚本文件,不能使用sh或bash,只能使用点或者source来进行调用。
4、shell脚本开发基本规范
4.1、开头指定脚本解释器
#!/bin/sh 或 #!/bin/bash
4.2、开头注意加时间、作者、联系邮箱、脚本作用等信息
可配置vim编辑文件时自动加上以上信息,方法是修改~/.vimrc配置文件
4.3、脚本中尽量不要使用中文注释
尽量使用英文注释,防止切换系统环境后出现中文乱码问题
4.4、shell脚本使用.sh结尾
例:script-name.sh,这样方便自己或他人识别这是shell脚本文件
5、代码书写习惯
5.1、成对的符号尽量一次性写出来,防止遗漏
有很多人在编写shell脚本时,由于各种原因多写或漏写了符号,导致最终运行脚本时出错,从而浪费不必要的时间进行排错。例如:大括号{},中括号[],小括号(),单引号’’,双引号””,反引号``,等成对出现的符号尽量一次性写出来,然后在其中写入合适的代码即可,这样就避免了符号的遗漏导致的报错问题。
3.2、括号的保留空格习惯
中括号[ ]两端需要留有空格,不然会报错。书写时即可留出空格然后书写内容。如果不知道大括号{},中括号[],小括号(),到底哪种括号需要两端留空格,可以在书写这些括号的时候两端都保留空格来进行书写,这样可以有效避免因空格导致的各种错误。
3.3、流程控制语句一次性书写完再添加内容
例1:if语句格式一次书写完成
if 条件内容 then 条件成立后执行的代码 fi
例2:for循环格式一次书写完成
for条件内容 do 条件成立后执行的代码 done
提示:while、until、case等语句也是一样
3.4、代码缩进提高可读性
例如:下面的代码输出1-50之间所有的偶数
#!/bin/bash for i in $(seq 50); do if (( $i%2 == 0 ));then echo $i fi done
6、变量的命名规则
1、变量名必须是以字母或下划线”_”开头,后面跟字母、数字或下划线。
2、变量名中间不能有空格,可以使用下划线连接。
3、变量名不要使用问号”?”、星号”*”或其他特殊字符。
4、变量名不能使用标点符号,更不能使用bash里的关键字,例如:if,for,while,do等关键字。
5、变量名的命名尽量要有意义,最好能够让别人一眼能看出什么意思。
6、自定义变量尽量不要和系统环境变量冲突。
7、局部变量最好使用local进行定义。
转载于:https://blog.51cto.com/longlei/2328071