shell script

1、shell script的編寫與執行shell

   一、shell script 的編寫中還須要用到下面的注意事項:bash

    a、命令的執行是從上到下,從左到右地分析與執行oop

    b、命令、參數間的多個空白都會被忽略掉測試

    c、空白行也將被忽略掉, 而且[tab]按鍵所得的空白一樣視爲空格鍵調試

     d、若是讀取到一個Enter符號(CR),就嘗試開始執行該行(或該串)命令進程

    e、至於若是一行的內容太多,則可使用「\[Enter]」來擴展至下一行ip

     f、"#"可做爲批註。it

   二、執行文件(/home/sam/shell.sh)io

    一、直接命令執行: shell.sh文件必需要具有可讀與可執行(rx)的權限,而後:function

      絕對路徑: 使用/home/sam/shell.sh來執行

      相對路徑: 假設工做目錄爲/home/sam/ , 則使用./shell.sh

      變量「PATH」功能: 將shell.sh放在PATH指定的目錄內, 例如:~/bin/

    二、以bash進程來執行:經過「bash shell.sh」或「sh shell.sh」來執行

   三、script的執行方式的區別(source, sh script, ./script)

    一、利用直接執行的方式來執行script:

      不管是絕對路徑/相對路徑仍是$PATH內, 或者是利用bash(或sh)來執行腳本時,該script都會使用一個新的bash環境來執行(子進程)

    二、利用source來執行腳本: 在父進程中執行

2、善用判斷式

  一、 利用test命令的測試功能

    如:test -e /sam && echo "exist" || echo "Not exist"

   

  二、利用判斷符號[]

    如: [-z "$HOME"] ; echo $?

    注意:

      a、在括號[]內每一個組件度須要有空格鍵來分隔;

      b、在中括號內的變量,最好都以雙引號括起來;

      c、在中括號內的常量, 最好都以單或雙引號括起來。

  三、shell script 的默認變量($0 $1 ...)

    $0: 執行的腳本文件名

      $1,$2,...: 第1,2,...個參數

    $#: 表明後接的參數「個數」

    $@: 表明「$1」、「$2」、「$3」之意,每一個變量是獨立的(用雙引號括起來)

    $*: 表明"$1c$2c$3c$4",其中c爲分隔字符, 默認爲空格鍵

 

     shift: 形成參數變量號碼偏移

      shift 會移動變量, 並且shift後面能夠接數字, 表明拿掉最前面的幾個參數的意思。

 

3、 條件判斷式

   一、利用 if...then

     單層:

        if [條件判斷式]; then

            邏輯

        fi <--if語句結束語

     多重:

        if [條件判斷式]; then

           邏輯

        elif [條件判斷式]; then

          邏輯

        else 

          邏輯

        fi

 

     二、利用case...esac判斷

      case $變量名稱 in

        "第一個變量內容" )

          程序段

          ;;

        "第二個變量內容")

          程序段

          ;;

         *)

          exit 1

          ;;

      esac

     3 、利用function功能

      function fname(){

        程序段

      }

 4、循環(loop)

    一、while do done, until do done(不定循環)

      while [ condition ]

      do

        程序段落

      done

        ----------》當condition條件成立時,就進行循環

       until [ condition ]

       do

         程序段落

       done

       -----------》當condition條件成立時,就終止循環

 

    二、for ... do...done(固定循環)

        for var in con1 con2 con3...

        do

          程序段落

        done

    三、for ...do ...done的數值處理

      for((初始值; 限制值; 執行步長))

       do

        程序段

      done

 

5、shell script的追蹤與調試

   sh [-nvx] scripts.sh

    -n : 不要執行script 僅查詢語法的問題

    -v: 在執行script前, 先將script的內容輸出到屏幕上

    -x: 將使用到的script內容顯示到屏幕上

相關文章
相關標籤/搜索