Shell脚本学习

基础部分

  1.Shell脚本首行需要指定命令解释器,格式为

    #! /bin/bash

  这里以常用的bash为例,实际使用时可以指定为/bin目录下的一个命令,比如/bin/rm,执行脚本时有两种方式,一种是给脚本加上执行权限,用./ScriptName的方式执行

    chmod +x ScriptName  #加执行权限的方式有多种

    ./ScriptName

  另外一种是用指定的/bin目录下面的某一个命令来执行该脚本,这个脚本不需要加执行权限,以/bin/bash为例,可以这样

    /bin/bash ScriptName

  在使用第二种方式时,脚本中的如果第一行为指定命令解释器的语句则会被当作注释,不会被执行。这种方式下,要指定正确的命令。比如说一个自删除的脚本如下:

    

  如果使用/bin/bash来执行这个脚本:

    

  如果使用加权限的方式来执行这个脚本:

    

  2.特殊符号

  #      注释符号,可以被转义打印,也可以用来做参数替换和数制转换,特殊情况后面介绍

  ;       命令分割符,一行中有多个命令时用来分割命令,一行只有一个命令时可以被舍弃

  ;;      用来终止shell脚本中的case语句,后面会介绍case语句

  .       有多种含义,其中比较重要的是和source命令相同含义

  *      匹配0个或多个任意字符

  ?      匹配一个任意字符

  []      匹配一个方括号中出现字符,例如[1-9],只匹配0-9这10个数字中的任意一个

  `或$()    命令代换,例如下面两行是相同意义的

            DATE=`date`

            DATE=$(date)

  $(())    算术代换,例如

            VAR=45

            echo $(($VAR+3))

  \      转义字符或表示续行

  '      字符串的界定符,单引号内的所有值都被认为是字符串的一部分,包括回车和转义字符

  "      字符串的界定符,双引号内可以使用转义字符。

Shell脚本语法

 

  1.条件测试test或[]:

      

  运行结果:

      

  常见的判断命令有下面这几个:

  -d $DIR               判断DIR是否存在且为目录,如果存在且为目录返回真

  -f  $FILE              判断FILE是否存在且为文件,如果存在且为文件返回真

  -z   $STRNG              判断STRING的长度是否为0,如果为0则返回真

  -n  $STRING             判断STRING的长度是否不为0,如果不为0则返回真

  $STRING1 = $STRING2      相等判断,普通语句中表示赋值,在测试命令中test或[]表示相等判断

  $STRING1 !=  $STRING2      不等判断

  -eq                 相等判断

  -ne                 不等判断

  -lt                  小于判断

  -le                  小于等于判断

  -gt                   大于判断

  -ge                   大于等于判断

  !                     逻辑非

  -a                   逻辑与

  -o                   逻辑或

 

  2.控制语句

  if/then/elif/else/fi

    

posted @ 2016-03-23 21:54  sn_112  阅读(158)  评论(0)    收藏  举报