无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

 

until循环
条件中1为真,0为假
until循环执行一系列命令直至条件为真时停止。 until循环与while循环在处理方式上刚好相反。一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用。
until循环格式为:
Shell代码
  1. until  条件   
  2. do   
  3.     命令1  
  4.     . . .   
  5. done  
条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次—请注意这一点
监视文件
下面例子中,until循环不断挂起做睡眠,直至文件process.LCK 被删除。文件删除后,脚本进入正常处理过程。
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有没有登录,登陆后给自己发个邮件
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循环
while循环用于不断执行一系列命令,也用于从输入文件中读取数据,其格式为:
Shell代码
  1. while  命令   
  2. do   
  3. 命令1  
  4. 命令2  
  5. . . .   
  6. done  
虽然通常只使用一个命令,但在 while和do之间可以放几个命令。命令通常用作测试条件。只有当命令的退出状态为 0时,do和done之间命令才被执行,如果退出状态不是 0,则循环终止。
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命令允许跳出循环。break通常在进行一些处理后退出循环或 case语句。如果是在一个嵌入循环里,可以指定跳出的循环个数。例如如果在两层循环内,用 break刚好跳出整个循环。
跳出case语句
下面的例子中,脚本进入死循环直至用户输入数字大于 5。要跳出这个循环,返回到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命令,只有一点重要差别,它不会跳出循环,只是跳过这个循环步。

只有注册用户登录后才能发表评论。


网站导航: