`
tomotoboy
  • 浏览: 162118 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

控制流结构——until、while、break、continue

阅读更多
until循环
条件中1为真,0为假
until循环执行一系列命令直至条件为真时停止。 until循环与while循环在处理方式上刚好相反。一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用。
until循环格式为:
until  条件
do
	命令1
	. . .
done
条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次—请注意这一点
监视文件
下面例子中,until循环不断挂起做睡眠,直至文件process.LCK 被删除。文件删除后,脚本进入正常处理过程。
/home/l/g/tomotoboy/until >ls
until_lck  untilwho
/home/l/g/tomotoboy/until >[ -f untilwho ]
/home/l/g/tomotoboy/until >echo $?
0
/home/l/g/tomotoboy/until >[ ! -f untilwho ]
/home/l/g/tomotoboy/until >echo $?
1
/home/l/g/tomotoboy/until >rm untilwho
/home/l/g/tomotoboy/until >[ ! -f untilwho ]
/home/l/g/tomotoboy/until >echo $?
0

#!/bin/sh
#until_lck
touch `pwd`/process.LCK
LOCK_FILE=`pwd`/process.LCK
until [ ! -f $LOCK_FILE ]
do
     sleep 1
done
echo "file deleted"

查找tomotoboy有没有登录,登陆后给自己发个邮件
/home/l/g/tomotoboy/until >cat untilwho
#!/bin/sh
#until_who
IS_TOMOTOBOY=`who | grep tomotoboy`
until [  "$IS_TOMOTOBOY" ]
do
    sleep 5
done
echo "Wtch it. tomotoboy in " | mail tomotoboy

while循环
while循环用于不断执行一系列命令,也用于从输入文件中读取数据,其格式为:
while  命令
do
命令1
命令2
. . .
done
虽然通常只使用一个命令,但在 while和do之间可以放几个命令。命令通常用作测试条件。只有当命令的退出状态为 0时,do和done之间命令才被执行,如果退出状态不是 0,则循环终止。
#!/bin/sh
#whilecount
COUNT=0
while [ $COUNT -lt 5 ]
do
  echo "$COUNT"
  COUNT=`expr $COUNT + 1`
done

/home/l/g/tomotoboy >whilecount
0
1
2
3
4

读文件
#!/bin/sh
#whileread
while read LINE
do
  echo "$LINE"
done < sed.txt



break
break命令允许跳出循环。break通常在进行一些处理后退出循环或 case语句。如果是在一个嵌入循环里,可以指定跳出的循环个数。例如如果在两层循环内,用 break刚好跳出整个循环。
跳出case语句
下面的例子中,脚本进入死循环直至用户输入数字大于 5。要跳出这个循环,返回到shell提示符下,break使用脚本如下:
#!/bin/sh
#breakout
#while : means loop forever
while :
do
   echo -n "Enter any number [1..5]: "
   read ANS
   case $ANS in
   1|2|3|4|5) echo " great you entered a number between 1 and 5"
   ;;
   *)echo "Wrong number..bye"
   break
  ;;
 esac
done

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

continue
continue命令类似于break命令,只有一点重要差别,它不会跳出循环,只是跳过这个循环步。
分享到:
评论

相关推荐

    SHELL流程控制

    一、expr命令用法 P67 二、控制流结构 之 if then else ...五、控制流结构 之 until循环 P71 六、控制流结构 之 while循环 P72 七、控制循环 之 break P73 八、控制循环 之 continue P73 九、退出Shell语句 之 exit P74

    LINUX与UNIX_Shell编程指南(下)

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    Linux与unix shell编程指南

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    LINUX 与 UNIX SHELL编程指南

    第 18 章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else 语句 161 18.3.1 简单的 if 语句 162 18.3.2 变量值测试 162 18.3.3 grep 输出检查 ...

    linux shell 编程教程

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    shell 编程指南pdf

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    LINUX与UNIX SHELL编程指南(很全)

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    LINUX与UNIX_SHELL编程指南2

    控制流结构 160 &lt;br&gt;18.1 退出状态 160 &lt;br&gt;18.2 控制结构 160 &lt;br&gt;18.2.1 流控制 161 &lt;br&gt;18.2.2 循环 161 &lt;br&gt;18.3 if then else语句 161 &lt;br&gt;18.3.1 简单的if语句 162 &lt;br&gt;18.3.2 变量值...

    linux与unix shell 编程(下)

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    LINUX与UNIX SHELL编程指南.rar

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    Linux与unix shell编程指南1.rar

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    LINUX与UNIX SHELL编程指南

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    LINUX与UNIX Shell编程指南

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    linux与unix shell编程(上)

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

    LINUX与UNIX+SHELL编程指南

    第18章 控制流结构 160 18.1 退出状态 160 18.2 控制结构 160 18.2.1 流控制 161 18.2.2 循环 161 18.3 if then else语句 161 18.3.1 简单的if语句 162 18.3.2 变量值测试 162 18.3.3 grep输出检查 163 18.3.4 用...

Global site tag (gtag.js) - Google Analytics