Shell指令碼-----while迴圈和until迴圈

來源:互聯網
上載者:User

標籤:while

while 測試條件

do

     語句1

     語句2

done

測試條件:條件滿足就迴圈,直到條件不滿足就退出迴圈

while迴圈如何退出?在迴圈體中改變測試條件相應的變數值

補充:算術運算子

    sum=$[$sum+$i] = sum+=$i

                                        -=

                                        *=

     sum+=1 = let sum++

                          sum--

sam=3

while [ $sam - le 5 ]

    do

          let sam++

     done

例子:使用者隨機輸入一個數值,就迴圈幾次echo "test" >> /tmp/123

   

 #!/bin/bash     a=1     read -p "Please enter a number:"  sam     while [ $a -le $sam ]     do          echo "test" >> /tmp/123          let a++     done

例子2:當前系統所有使用者,ID號為偶數就輸出使用者名稱和shell

#!/bin/bashfile=/etc/passwdwhile read line  read 會自動將$file這個檔案中的每一行,將讀取的每一行的值付給$linedo        id=$(echo $line | cut -d: -f3)         if [ $[$id%2] -eq 0 ]                            $id除於2取餘等於0 就執行            then                username=$(echo "$line" |cut -d: -f1)                shell=$(echo "$line" | cut -d: -f7)                echo -e "UserName:$username\nShell:$shell\n"        fidone < $file

     
列子:將使用者輸入的字元轉換成大寫,字元quit退出指令碼

#!/bin/bash

read -p "A string:" stringwhile [ "$string" != "quit" ]               如果使用者輸入的不是quit就會一直迴圈直到字串是quit     do           echo "$strin" | tr "a-z" "A-Z"          read -p "New String [ quit for exit] :" string     done

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

until迴圈 測試條件

     do

        語句1

        語句2

     done

條件不滿足迴圈,直到滿足就退出迴圈

     列子:將使用者輸入的字元轉換成大寫,字元quit退出指令碼

#!/bin/bash

read -p "A string:" string

until [ "$string" == "quit" ]              如果使用者輸入的是a.$string=quit 條件不滿足就繼續迴圈,知道$string=quit條件滿足時退出

     do

           echo "$strin" | tr "a-z" "A-Z"

          read -p "New String [ quit for exit] :" string

     done

例子2:每隔5秒查看hadoop使用者是否登入,顯示登入並退出;否則顯示目前時間,並輸出hadoop尚未登入

#!/bin/bashuntil who | grep "^hadoop" &> /dev/null      do            echo "$(date) hadoop not login"            sleep 5donedong            echo "hadoop login"            exit 0

例子3:顯示如下菜單,讓使用者選擇,並輸出相關資訊,當使用者選擇完成,顯示相應資訊,不退出,讓使用者重新選擇,直到輸入quit退出

cat << EOF
d|D) show disk usages
m|M) show memory usages
s|S) show swap usages
*)quit
EOF

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

#!/bin/bashcat << EOFd|D) show disk usagesm|M) show memory usagess|S) show swap usages*)quitEOFread -p "Please Input Device :" usagesuntil [ "$usages" ==  "quit" ]do      case $usages in                d|D)                           df -h                            read -p "Please Input     Device :" usages            ;;        m|M)                            free -m | head -2                            read -p "Please Input Device :" usages                            ;;                    s|S)                                free -m | tail -1                                read -p "Please Input Device :" usages                                    ;;                        *)                                echo "Input error"                                exit 7  esacdone                ;;         esacdong


本文出自 “懸劍” 部落格,請務必保留此出處http://sublime.blog.51cto.com/8856101/1538989

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.