Linux--Shell脚本

     ***********************************************************************************************************************************

      一、什么是shell脚本

     shell除了是命令解释器之外还是一种编程语言,用shell编写的程序类似于dos下的批处理程序。

      用户可以在文件中存放一系列的命令,通常将shell编写的程序成为shell脚本或shell程序。

      将命令、变量和流程控制有机的结合起来,将会得到一个功能强大的编程工具。shell脚本语言非常擅长处理文本类型的数据,由于Linux系统中的所有配置文件都是纯文本的,所以shell脚本语言在管理linux系统中发挥了巨大作用。

         二、脚本的编码规范

     一个bash脚本的正确的起始部分应该以#!开头:

     #!/bin/bash

     在调用bash脚本的时候,以#!开头的语句通知系统用何解释器执行此脚本。

     如果bash是你的默认shell,那么脚本的开头也不用非得写上#!。但是如果你是用不同的shell来开启一个脚本的话,比如tcsh,那么你就必须需要#!了。良好的编码规范还要求以注释形式说明如下的内容:

     脚本名称、脚本功能、版本声明、复杂脚本应对算法做简要说明

     下面列出一个脚本的helloWorld程序:
  

           #!/bin/bash

          #program:

          #This program shell is "Hello World"

          echo -e "Hello World!\a\n"

          exit 0


       下面给出一个脚本的执行过程:

        a. 创建一个脚本test.txt 

                    touch.txt

                 b. 打开新创建的脚本test.txt

                   vi test.txt

               c. 编辑脚本


            Linux--Shell脚本

        

              d.利用wq命令保存编辑的脚本

              e.执行脚本  sh.test.txt

            Linux--Shell脚本

                  

              执行脚本有两种方式,一种是命令 sh test.txt

             另一种方式是 ./test.txt 执行脚本,不过一般新创建的脚本是没有执行权限的,执行的时候会报-bash: ./test/txt: No such file or directory结果,

                  Linux--Shell脚本

         这时需要用户利用chmod命令修改文件权限,可以一项一项的修改,本人一般都是直接使用 chmod 744 test.txt 命令,将文件的所有权限添加,这个可以根据各自的习惯修改添加完权限之后,


                  Linux--Shell脚本


                再执行test.txt脚本,成功:


                Linux--Shell脚本

                  


     三、shell变量

     定义shell变量

     name=string

     name 是变量名,变量名用小写字母命名

     =是赋值符号,两边不能有空格,否则将视为命令string是被赋的变量值

        例如:

        v1=ceshi

        v2='this is a shell script test' 


    shell变量表达式:

        表达式                                                         说明

        ${#String}                                           $string的长度

       ${string:position}                               从position开始提取字符串

       ${string:position:length}                  从$:position开始提取长度为$length的字串

       ${string#substring}                          从开头删除最短匹配字串

       ${string##substring}                       从开头删除最长匹配字串

       ${string%substring}                         从结尾删除最短匹配字串

       ${string%%substring}                    从结尾删除最长匹配字串

       ${str#hello}                                      删除以"hello"开始的字符串

       ${str#hello*.}                                    删除开始"hello"到"." 的所有字符(最短匹配)

       ${str##hello*.}                                    删除开始"hello" 到"."的所有字符(最长匹配)


    test与[] 

      -f           文件是否存在

      -d          目录是否存在

      -r           文件是否有读权限

      -w          文件是否有写权限

      -x           文件是否有执行权限

      注意:

      在中括号中必须都要使用空格来分隔

      在中括号中的变量,最好都要以双引号括起来

      在中括号中的常数,最好都以单引号括起来

      例如:

              [ "$a" == "$b" ] && echo 'Yes' || echo 'No' 

              [ '12' == '10' ] && echo 'Yes' || echo 'No' 

***********************************************************************************************************************************