until循环也叫直到型循环,格式如下,do与done之间为循环体:
或者为:
until先判断它后面的命令的退出状态,退出状态为非0时(命令不成功时,当关键字until后面的条件不成立时),关键字do之后的命令开始执行,执行到关键字done后,关键字until后面的命令再次执行,如果退出状态还是非0(条件还是不成立),循环将继续进行,即循环体内的命令继续执行……直到until后面的命令执行成功(退出状态为0、条件成立)时,循环结束。until循环的流程如图6-4所示。
图6-4 until循环流程图
上面的例子,先将i的初值赋为1,接着判断i的值是否大于3,因为1不大于3,所以显示i=1,再将i的值加1;i的值变为2,因为2也不大于3,所以显示i=2,再将i的值加1;i的值变为3,因为3仍然不大于3,所以显示i=3,再将i的值加1;i的值变为4,4大于3,条件成立,循环结束,循环体内的命令不再执行。脚本的运行结果如下:
对比while和until循环,可以发现,while循环就是当条件满足(关键字while后面的命令的退出状态为0)时,循环体内的命令就执行;until循环就是当条件不满足(关键字until后面的命令的退出状态为非0)时,循环体内的命令就执行,直到条件满足为止。(www.xing528.com)
until循环也可以是零循环。下面的例子,i的初值为100,已经满足了“大于3”的条件,所以,运行该脚本不会有任何显示输出。
until循环也可以是无穷循环。
上面的例子,i的初值为1,不满足“大于3”的条件,输出i=1,然后i的值被减去1;i变为0,还是不满足“大于3”的条件,输出i=0,然后i的值被减去1;i变为-1,仍然不满足条件……进入无穷循环。脚本运行结果如下,i的值每次被减去1,如果不强行终止,脚本一直显示i的值,直至溢出:
与while循环相应,使用untilfalse可以构成无穷循环,使用untiltrue可以构成零循环。
无穷循环运行时需要人为强行终止它。无穷循环似乎没用,其实不然。生活中就有无穷循环的应用,如取款机就是一个无穷循环的例子。假设不停电、钱永远取不完,并且没有其他故障的话,取款机是一个很好的无穷循环的例子。取款机的待机画面显示“欢迎使用,请插卡”;插卡后,机器显示相应的画面;选择取款的话,机器检查卡内余额、本次取款数额、当日累计的取款数额是否大于每日限额等……最后用户提现、取卡,取款机回到待机画面,等待下一位客户使用。下一位顾客来了后,无论是取款、修改密码、转账,还是查询余额,取款机进行着同样的循环。
可以在无穷循环中“埋设”下节要讲的break命令,满足某种条件时,循环终止。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。