Shell 编程13(编写shell注意事项)

来源:互联网 发布:unity3d 动画播放次数 编辑:程序博客网 时间:2024/06/03 03:43

1 脚本编写风格

如果你编写的脚本超过百行,或者你希望在过一段时间之后,还能够正确理解自己的脚本内容的话,就必须养成良好的脚本编程习惯。在诸多编程习惯当中,编程风格是最重要的一项内容。

良好的编程风格可以在许多方面帮助开发人员。良好的编程风格可以增加代码的可读性,并帮助你理清头绪。如果程序非常杂乱,大概看一下你就会晕头转向。写脚本也是一门艺术,良好清晰的版式,能让人一目了然,让阅读者有清晰的逻辑,Shell编写风格最能体现一个Linux Shell程序员的综合素质。

需要从缩进、{}的格式、空格和空行的用法、判断和循环的编程风格、命名规范、注释风格等角度注意自己的编程风格

 

缩进

缩进格式是4个字符。

程序的缩进超过3级,则应考虑重新设计程序

 

{}的格式

一种是“{”括号与“}”括号每个占用一行,缩进与函数名一致,而函数体则缩进4个字符。

另外一种格式是:“{”括号与函数名在同一行中,函数体缩进4个字符,而“}”括号则单独占用一行。

 

空格和空行的用法

程序对于空格来说,缩进是空出四个空格

对于运算符(赋值运算符除外)来说一般前或空出一个空格。

对于赋值运算符“=”左右是不能加空格,否则会发生不必要的错误

对于判断运算符来说,一般要加上if后要加空格与“[”运算符隔开

对与空行来说,空行起着分割代码的作用,添加必要的空行有时是必须的,一般说来在函数的开始和结束、判断或循环的始末、函数调用始末以及前后联系不紧密的地方都要加空格

 

判断和循环的编程风格

命名规范

对于函数来说,一般是根据函数的功能来进行命名,其一般有两种命名方式:

  (1)对于一些复杂点的函数操作,可以使用“操作对象+操作”的形式进行命名,如:array_sort()函数,从字面上就可以看出该函数用于对数字进行排序。

   (2)对于简单的函数,可以直接用操作名来做函数名,但要注意不要和系统的命令相同造出不必要的错误,如address(),该函数对进行操作。

对于变量来说,一般是通过匈牙利命名法进行命名:

    (1)对于单个英文单词就可命名的,可直接用该单词进行命名,如变量average可用于对变量“平均数”进行命名。

    (2)对于单个单词无法命名的单词,可通过双单词或多单词形式的缩略词来进行命名,如: dir_num可以用于命名变量“目录个数”。

常量来说,可通过将将该变量全部设置为大写与变量形成区别,下面是常量的命名方式:

   (1)对于单个单词可以命名的,可直接使用该单词的全部大写形式进行命名,如:常量TOTAL可对常量“总数”进行命名。

   (2)对于单个单词无法表达清晰的常数,可通过加下划线的形式对其进行命名,如:常数GLOBAL_CON可对常量“全局常量”进行命名。

 

注释是必须的,否则编写完脚本后过段时间就有可能忘记该脚本的用途,但过量的注释会使得脚本看起来很复杂,也很臃肿,所以在加注释时要有个度。

如果是变量的话,建议与变量处于同一行,使得结构更紧凑。

函数的注释也应该放在函数体之前,并且要对函数进行简单描述和如何使用等

 

2 脚本优化

遇到重复编写的的代码可创建一个函数来处理这些重复部分,然后通过函数调来简化脚本。

不要对静态值进行硬编码,保持脚本灵活性。演示例15-8。

在编写有参数输入的脚本时,要特别注意给用户足够的提示,提示用户需要输入的参数是什么,同时提供参数个数和参数类型判断,否则用户不了解脚本中设置的参数信息,就可能无法完成该脚本的执行。

 

2 脚本安全

尽管Linux的安全性比Windows系统要好,但并不代码Linux是绝对安全的,所以在Linux Shell编程过程中要注意以下一些问题:

不要将当前目录置于PATH下,可执行脚本应该放在标准的系统目录下,否则将会打开特洛伊木马的大门。

确认PATH下的每个目录都有其对应的拥有者可以写权限,其他任何人不能写入,否则将有可能被病毒侵入的危险。

写程序时要花费时间想想如何去写,在开始运行前要不断的设法测试,在设计时最好将如何设计实现也写入其中。

在编写脚本时最好不要使用root用户,否则有可能被别人窃取密码。

不要在用户输入上使用eval,如果其他用户在读取脚本时发现使用了eval,则可以轻松的将这个脚本破坏掉。

小心的检测自己编写的脚本,寻找是否存在有可能被利用的漏洞和错误,试着找出破坏它的方式,再修正这些发现的问题。

 

脚本加密

如果你的Shell脚本包含了敏感的口令或者其它重要信息,而且不希望用户通过命令ps -ef(查看系统每个进程的状态)捕获敏感信息。你可以使用shc工具来给shell脚本增加一层额外的安全保护。 shc是一个脚本编译工具,使用RC4加密算法, 它能够把shell程序转换成二进制可执行文件(支持静态链接和动态链接)。该工具能够很好的支持: 需要加密、解密或者通过命令参数传递口令的环境