posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

           

          until循環(huán)
          條件中1為真,0為假
          until循環(huán)執(zhí)行一系列命令直至條件為真時(shí)停止。 until循環(huán)與while循環(huán)在處理方式上剛好相反。一般while循環(huán)優(yōu)于until循環(huán),但在某些時(shí)候—也只是極少數(shù)情況下,until循環(huán)更加有用。
          until循環(huán)格式為:
          Shell代碼
          1. until  條件   
          2. do   
          3.     命令1  
          4.     . . .   
          5. done  
          條件可為任意測(cè)試條件,測(cè)試發(fā)生在循環(huán)末尾,因此循環(huán)至少執(zhí)行一次—請(qǐng)注意這一點(diǎn)
          監(jiān)視文件
          下面例子中,until循環(huán)不斷掛起做睡眠,直至文件process.LCK 被刪除。文件刪除后,腳本進(jìn)入正常處理過程。
          Shell代碼
          1. /home/l/g/tomotoboy/until >ls   
          2. until_lck  untilwho   
          3. /home/l/g/tomotoboy/until >[ -f untilwho ]   
          4. /home/l/g/tomotoboy/until >echo $?   
          5. 0  
          6. /home/l/g/tomotoboy/until >[ ! -f untilwho ]   
          7. /home/l/g/tomotoboy/until >echo $?   
          8. 1  
          9. /home/l/g/tomotoboy/until >rm untilwho   
          10. /home/l/g/tomotoboy/until >[ ! -f untilwho ]   
          11. /home/l/g/tomotoboy/until >echo $?   
          12. 0  
          13.   
          14. #!/bin/sh   
          15. #until_lck   
          16. touch `pwd`/process.LCK   
          17. LOCK_FILE=`pwd`/process.LCK   
          18. until [ ! -f $LOCK_FILE ]   
          19. do   
          20.      sleep 1  
          21. done   
          22. echo "file deleted"  

          查找tomotoboy有沒有登錄,登陸后給自己發(fā)個(gè)郵件
          Shell代碼
          1. /home/l/g/tomotoboy/until >cat untilwho   
          2. #!/bin/sh   
          3. #until_who   
          4. IS_TOMOTOBOY=`who | grep tomotoboy`   
          5. until [  "$IS_TOMOTOBOY" ]   
          6. do   
          7.     sleep 5  
          8. done   
          9. echo "Wtch it. tomotoboy in " | mail tomotoboy  

          while循環(huán)
          while循環(huán)用于不斷執(zhí)行一系列命令,也用于從輸入文件中讀取數(shù)據(jù),其格式為:
          Shell代碼
          1. while  命令   
          2. do   
          3. 命令1  
          4. 命令2  
          5. . . .   
          6. done  
          雖然通常只使用一個(gè)命令,但在 while和do之間可以放幾個(gè)命令。命令通常用作測(cè)試條件。只有當(dāng)命令的退出狀態(tài)為 0時(shí),do和done之間命令才被執(zhí)行,如果退出狀態(tài)不是 0,則循環(huán)終止。
          Shell代碼
          1. #!/bin/sh   
          2. #whilecount   
          3. COUNT=0  
          4. while [ $COUNT -lt 5 ]   
          5. do   
          6.   echo "$COUNT"  
          7.   COUNT=`expr $COUNT + 1`   
          8. done   
          9.   
          10. /home/l/g/tomotoboy >whilecount   
          11. 0  
          12. 1  
          13. 2  
          14. 3  
          15. 4  

          讀文件
          Shell代碼
          1. #!/bin/sh   
          2. #whileread   
          3. while read LINE   
          4. do   
          5.   echo "$LINE"  
          6. done < sed.txt  



          break
          break命令允許跳出循環(huán)。break通常在進(jìn)行一些處理后退出循環(huán)或 case語句。如果是在一個(gè)嵌入循環(huán)里,可以指定跳出的循環(huán)個(gè)數(shù)。例如如果在兩層循環(huán)內(nèi),用 break剛好跳出整個(gè)循環(huán)。
          跳出case語句
          下面的例子中,腳本進(jìn)入死循環(huán)直至用戶輸入數(shù)字大于 5。要跳出這個(gè)循環(huán),返回到shell提示符下,break使用腳本如下:
          Shell代碼
          1. #!/bin/sh   
          2. #breakout   
          3. #while : means loop forever   
          4. while :   
          5. do   
          6.    echo -n "Enter any number [1..5]: "  
          7.    read ANS   
          8.    case $ANS in   
          9.    1|2|3|4|5) echo " great you entered a number between 1 and 5"  
          10.    ;;   
          11.    *)echo "Wrong number..bye"  
          12.    break   
          13.   ;;   
          14.  esac   
          15. done  

          Shell代碼
          1. /home/l/g/tomotoboy >breakout   
          2. -n Enter any number [1..5]:   
          3. 3  
          4.  great you entered a number between 1 and 5  
          5. -n Enter any number [1..5]:   
          6. 6  
          7. Wrong number..bye  

          continue
          continue命令類似于break命令,只有一點(diǎn)重要差別,它不會(huì)跳出循環(huán),只是跳過這個(gè)循環(huán)步。
          主站蜘蛛池模板: 博客| 绍兴县| 平利县| 永吉县| 洞口县| 吉木萨尔县| 封丘县| 赣榆县| 三都| 武功县| 娄烦县| 乾安县| 建昌县| 江津市| 长白| 丹东市| 雷波县| 任丘市| 施甸县| 东城区| 乌拉特中旗| 永靖县| 吴川市| 鄂托克前旗| 柘城县| 柞水县| 靖西县| 湘潭县| 大港区| 绿春县| 连州市| 锡林郭勒盟| 噶尔县| 南陵县| 手游| 吉林市| 聊城市| 教育| 襄城县| 宽城| 汾西县|