Shell脚本编程基础

来源:互联网 发布:医美网络咨询招聘 编辑:程序博客网 时间:2024/06/06 01:55

一、执行Shell脚本

      chomd  +x  xxx.sh

        ./xxx.sh

 

二、Shell中的特殊字符

      Shell脚本中除了使用普通字符外,还使用一些特殊字符,下面分别进行介绍这些特殊字符。

    1、通配符

         通配符主要用于模式匹配,常用的通配符有如下几种:

        -星号(*),匹配0个或多个字符,即以c打头的任意字符串。例如,c*可以匹配c、cc、以及cpp等。

        -问号(?),匹配任意单字符。

        -方括号([]),匹配方括号中限定的任意一个字符,可以直接给出,例如c[def],也可以设定范围,例如[1-9]

        -感叹号(!),表示方括号中列出的字符以外的字符。


    2、引号

          引号分为双引号、单引号和反引号。

          由双引号括起来的字符,除美元符号($)、反引号(`)和反斜线(\)仍保留其特殊功能外,其余字符均作为      普通字符对待。

          反引号括起来的字符串被Shell解释为命令行。

          由单引号括起来的字符都作为普通字符对待。


    3、输入输出定向符

          执行Shell命令时,系统会自动打开三个标准文件,通常对应于终端键盘的标准输入文件(stdin);对应于终端      屏幕的标准输出文件(stdout)和标准错误文件(stderr)。这三个文件都可以通过重定向符进行重新定向。
          输入重定向符“<”的作用是把命令的标准输入重新定向到指定文件;输出重定向符“>”的作用是把命令的标准输出      重新定向到指定文件。


    4、使用Shell变量

          Shell是一种解释型语言,直接对一个变量进行赋值,实际上就是定义了这个变量。
          例如,对变量STR进行赋值:
                STR="Hello World"
          注意:等号两边不能有空格。
          变量赋值之后,就可以使用美元符号($)对其进行引用,例如:
                echo $STR
          如果对一个已经赋值的变量重新赋值,新赋的值将取代原来的值。由于Shell变量是没有类型的,所以用户可以      使用同一个变量存放字符或整数。


          为了使Shell编程更为有效,系统还提供了一些特殊的变量,如下所示:
               $0:脚本名称;
               $#:命令行参数的个数;
               $*:所有的命令行参数;
               $[1-n]:第1~n个命令行参数;
               $$:当前进程的标识符;
               $!:后台运行的最后一个进程的标识符;
               $?:命令的退出状态,0表示没有错误。


三、条件测试

           条件测试使用test命令来完成,它常用来计算一个条件表达式的值,经常在条件语句和循环语句中被用来判断         某些条件是否满足。它的一般格式为:
               test 条件         或            [条件]
      注意:使用方括号时,要注意在条件两边加上空格。


    1、字符串测试

        字符串测试的主要操作符包括:
            ==:两个字符串相等;
            !=:两个字符串不等;
            -z:字符串为空;
            -n:字符串不为空。
       【实例1-53】下面使用-z操作符来测试变量STR是否为空,如果为非空,测试其取值是否为Hello World。
            $ [ -z $STR ]
            $ echo $?
            0 


    2、数值测试

        数值测试可用的操作符包括:
              -eq:两个数相等;
              -ne:两个数不相等;
              -gt:第一个数大于第二个数;
              -lt:第一个数小于第二个数;
              -le:第一个数小于等于第二个数;
              -ge:第一个数大于等于第二个数。
       【实例1-54】下面使用-eq操作符来测试变量的值是否为某个值。
               $ NUM=68 #定义Shell变量
               $ [ $NUM -eq “68” ]
               $ echo $?
               0


    3、文件状态测试

        文件测试主要用来测试文件的类型以及访问权限等,操作符包括:
               -f:是否为普通文件;
               -d:是否为目录;
               -c:是否为字符设备文件;
               -b:是否为块设备文件;
               -s:文件大小是否零;
               -r:用户对文件是否有读权限;
               -w:用户对文件是否有写权限;
               -x:用户对文件是否有执行权限。


    4、逻辑操作

       逻辑操作包括:
           -a:逻辑与;
           -o:逻辑或;
             !:逻辑非。
       【实例1-57】下面使用-a和-r操作符来测试两个文件是否均可读。
            $ [ -r file1 -a -r file2 ]
            $ echo $?
            0


四、Shell中的结构控制语句

    1、if语句

         if语句用来实现条件分支结构,它的一般格式为:
              if 条件1
              then
                  命令1
              elif条件2
              then
                   命令2
              else
                   命令3
              fi
          注意:if语句以它的反写fi结尾。
     如果条件1成立,则执行then后面的命令1;如果条件1不成立,但条件2成立,则执行命令2;如果两个条件都不          成立,则执行命令3。如图所示。


     2、case语句

         if语句主要用于在两个选项之间进行选择,而case语句则根据字符串或变量的值从多个选项中进行选择,其格式      为:

 case 字符串 in
模式1)
  命令1
  ;;
模式2)
  命令2
  ;;
  …
*)
  命令n
  ;; 
esac

       注意:case语句以它的反写esac结尾。


    3、for循环

       for循环的一般格式为:
           for变量名in [列表]
           do
                命令1
                命令2
                 …
           done
       在for循环中,使用变量名来遍历列表中所有取值,当变量值在列表中时,即执行一次所有命令。


    4、while循环

        while循环的一般格式为:
                while 条件
                do
                      命令1
                      命令2
                       ...
                done
        当条件成立时,do和done之间的命令才会被执行,执行完成后重新测试条件,如果不成立则终止循环。


五、定义Shell函数

         同许多高级语言类似的,Shell中也可以定义函数,这样可以提高代码的复用率。函数定义的格式如下所示:
                  [function] 函数名()
                  {
                     命令
                  }
         函数可以接受参数,在函数内部使用$1、$2、以及$*等来引用,他们分别表示第一个参数、第二个参数以及参            数的列表。

         【实例1-66】下面编写一个Shell脚本,从键盘上输入两个数,使用函数计算并输出他们的和。

           #!/bin/bash

           sun()

            {

            SUM='expr  $1 + $2'

            echo  $SUM

             }

             echo -n "请输入两个数字:"

             read X Y

             echo -n "$X + $Y ="

             SUM  $X  $Y

0 0
原创粉丝点击