Shell编程之三 —— shell script 脚本(未完待续)

1、脚本的语法构成:

  shell script 是利用 shell 的功能所写的一个『程序(program)』,这个程序是使用纯文本文件(文件后缀名最好为sh文件,方便我们管理),将一些 shell 的语法与指令(含外部指令)写在里面, 搭通配符、配正规表示法、管线命令与数据流重定向、条件判断、循环逻辑等功能,以达到我们所想要的处理目的。

    构成(常见):shell语法和外部指令

            通配符     [a-z]  [A-Z]     ?    *    

              正规表达式

              管线命令    |

            数据重定向      >>   <<   >    <     

            条件判断和循环

2、为什么要编写脚本,编写脚本的优缺点?

  优点:

       1、自动化管理的主要依据

        查询登录档、追踪流量、监控用户使用主机状态、主机各项硬设备状态、 主机软件更新查询、更不要说得应付其他使用者的突然要求了

       2、追踪与管理系统的重要工作

       3、简单入侵检测功能

       4、连续指令单一化

       5、简易的数据处理

       6、跨平台支持与学习历程较短

  缺点:

           虽然 shell script 号称是程序 (program) ,但实际上, shell script处理数据的速度上是不太够的。因为 shell script 用的是外部的指令与 bash shell 的一些默认工具,所以,他常常会去呼叫外部的函式库。因此,指令周期上面当然比不上传统的程序语言。 所以啰, shell script 用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上,就不够好了,因为 Shell scripts 的速度较慢,且使用的 CPU 资源较多,造成主机资源的分配不良。还好,我们通常利用 shell script 来处理服务器的侦测,倒是没有进行大量运算的需求!所以不必担心的。

3、编写脚本注意事项

  ①、命令的执行是从上到下,从左到右执行

  ②、命令、选项、参数之间的多个空格都会被忽略掉

  ③、空白行也会被忽略掉,并且所推开的[tab]按键的空白同样会被忽略掉

  ④、如果读取到一个Enter 符号(CR),就尝试开始执行该行(该串)命令

  ⑤、如果一个命令太长,则可以使用‘ \[Enter] ’ 来跳行书写命令

  ⑥、#为注解,在执行命令的时候注解不执行

4、脚本档案的命名规则和执行方法和执行脚本化的差异

   1、命名规则:一般以文件 ' .sh '  命名     (如xxx.sh)

   2、执行方法:

      首先需要有执行权限才行: chmod u+x xxx.sh

      执行方法:

          ①、以路径和修改变量(PATH) 来执行

              路径包括相对路径和绝对路劲

                 在当前目录下执行:   ./xxx.sh

                 不在当前目录下执行:  ./opt/xxx.sh 

              修改PATH变量:

                 方法一:把该脚本文件放在PATH变量的文件夹下面执行

                 方法二:修改PATH变量的路径,添加该文件夹为默认的PATH路径

          ②、以source 来执行  

              source 脚本文件名(source xxx.sh)

          上面两种执行方法①和②的区别:

              使用①里面的执行方法时:该 script 都会使用一个新的bash 环境来执行脚本内的指令!也就是说,使用者种执行方式时, 其实脚本文件是在

            子程序的 bash 内执行的。因此你的变量其实是在子程序bash内执行的。当在子程序执行完毕后子程序bash内的所有数据便被移除,因此在父程序

            底下 “ echo $变量名 ” 的时候,就看不到任何东西。

                   使用②里面的source来执行脚本文件时:是在父程序shell中执行脚本,所以在执行“ echo $变量名 ” 的时候,就看的到变量的值

        

      脚本执行的具体分析请参考:http://www.jb51.net/article/53924.htm

5、编写脚本的步骤(脚本里面需要些哪些注释信息):

    · script 的功能
    · script 的版本信息
    · script 的作者与联络方式
    · script 的版权宣告方式
    · script 的 History (历史纪录)
    · script 内较特殊的指令,使用『绝对路径』的方式来下达
    · script 运作时需要的环境变量预先宣告与设定
    · 良好的注释习惯和适当的[tab]退格功能

6、条件测试及控制流:

  参考网站:http://blog.csdn.net/wklken/article/details/6566945;     (基础知识和例题可以参考这个博客)

          http://a3147972.blog.51cto.com/2366547/1284633;

       http://www.jb51.net/article/54488.htm;

自己写的几个基础代码:

 test指令测试和用法(以及test和 " [ ] "的区别):

    条件判断式: 

      if......elif......else......fi 和 case 的语法 :http://www.cnblogs.com/l75790/p/7059296.html   

函数function的语法:http://www.cnblogs.com/l75790/p/7060483.html         

 

posted @ 2018-06-21 11:23  Panda.li  阅读(208)  评论(0编辑  收藏  举报