我的shell指令碼編程

來源:互聯網
上載者:User

標籤:編程   shell   語言   

   對於shell指令碼編程特點來說它是

        過程式程式設計語言、指令碼類型語言、解釋型語言。

  在寫指令碼的時候總是會遵循三種執行結構:順序執行結構、選擇執行結構、迴圈執行結構。

   順序執行即:以從左至右,從上到下順序執行所有的語句(命令)

   選擇執行結構:依照給定條件的邏輯判斷結果或者依照可選的取值範圍,進而選擇某個分支中的語句來執行;

    有if:分支選擇標準;邏輯判斷的結果;

     case:分支選擇標準;根據可選的取值;

   迴圈執行結構:對於某特定語句,重複執行0次,1次或多次;

   有for:遍曆指定的列表

    while:根據邏輯判斷的結果

    until:根據邏輯判斷的結果

   select:死迴圈,利用迴圈機制提供挑選清單

----------------------------------------------------------

  if結構通常來說有雙分支和多分支結構

   無非就是在if下又添加了elif  例如

if CONDITION1 ; then

           STATEMENT

           ...

         elif CONDITION2 ; then

           STATEMENT

           ...

         elif CONDITION3 ; then

           STATEMENT

           ...

         ...

         else

           STATEMENT

           ...

         fi

  case 語句使用來 在給出不同的參數時做出不同的結果

    case 變數引用 in 

        模式1)

          分支1

          ;;

        摸式2)

          分支2

          ;;

        ...

        *)

          預設分支

          ;;

      esac

   在這裡的模式可有很多種匹配方式

     1.普通的文本字元

     2.globbing風格的萬用字元

       *:任意長度任一字元

       ?:任意的單個字元

       []:範圍內的任意單個字元

       [^]:範圍外的任意單個字元

     3.| :或

 for 迴圈有兩種格式

    1.遍曆列表

     for VAAR_NAME in LIST ; do 

        迴圈體

     done

    這個列表LIST的可以:

            1):直接寫出

            2): 純整數列表

              seq:輸出一個整數列表

                 seq [FIRST [INCREMENT]] LAST

            3) :花括弧展開

                {FIRST..LAST}

                     {0..100..3}  顯示0-100中能被3整除的數字

            4) : 命令的執行結果傳回值

            5):GLOBBING(萬用字元)

            6): 某些變數的引用:[email protected],$*

     2.控制變數的格式  

       for (( 運算式1; 運算式2; 運算式3 )); do 

         ((迴圈體))

       done

          運算式1:為變數賦初始值

          運算式2:迴圈的允出準則

          運算式3:變數值的變換規律

  while、until迴圈:

       while CONDITION ; do

         迴圈體

       done

        進入迴圈的條件:CONDITON一直為真;

        退出迴圈條件:CONDITON為假

        -------------------

       until CONDITION ; do

        迴圈體

       done

       進入迴圈的條件:CONDITON一直為假;

        退出迴圈條件:CONDITON為真

 注意:對於while和until兩個迴圈結構來講,如果要實施變數增量操作,必須手動給出;

     例如:利用while和until迴圈結構,計算100以內所有整數和;

     #!/bin/bash

     #

     declare -i I=1

     while [ $I -le 100 ] ; do

      let SUM+=$I

      let I++

     done

對於迴圈語句 還有一個無限迴圈的用法

 while true ;do

    迴圈體

  done


  until false ;do

   迴圈體

  done


  在此類的迴圈結構中,必須適當的使用continue和break,以保證迴圈不會一直持續下去;

   continue:

    continue [n] 

     提前技術第n層的本次迴圈,直接進入下一輪條件判斷,若符合迴圈進入條件,則開啟下一輪迴圈; 

   break:

    break [n]

    提前結束第n層迴圈;不再繼續後續迴圈;

  

還有一個實現遍曆功能的while、until迴圈 用於對檔案的每一行讀取操作

while read LINES ; do

    迴圈體

  done < /PANTH/FROM/SOMEFILE

until ! read LINES ; do

 迴圈體

done < /PATH/FROM/SOMEFILE


select

  select迴圈主要用於建立一個菜單式列表,供使用者進行選擇;

  列表是按照數字順序排列的,我們只要選擇數字即可;


  一般來講,select與case一起使用;


  select是一個無限迴圈結構,因此,必須在迴圈體中使用break命令以退出迴圈,或者可以使用exit命令直接終止指令碼。


  select NAME [in 詞語 ... ;] do 命令; done


  select NAMl6E [in lsit ] ; do 

     命令 

  done

對於和使用者互動命令read

   read命令:

    read [-a 數組] [-p 提示符] [-t 逾時] [名稱 ...]

    名稱一般為變數名或數組名;如果不寫名稱,則系統會將read讀到的資訊儲存在REPLY變數中;


    注意:在使用read命令的時候,通常會使用-t選項來規定逾時時間;一旦使用-t選項定義了逾時時間,我們必須在後面判斷給定的變數是否為空白,如果為空白需要為變數提供預設值;

  


 取隨機數  8以內的

      echo $[$RANDOM%8]



本文出自 “12445165” 部落格,謝絕轉載!

我的shell指令碼編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.