while和until之间真正的区别是什么?
我想知道是否可以使用"until"进行越来越多的循环,然后使用while循环.
因为如果我这样做,我就看到了
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER+=1
done
Run Code Online (Sandbox Code Playgroud)
还有这个
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
Run Code Online (Sandbox Code Playgroud)
他们运作良好.
但如果我做相反的事情,例如:
COUNTER=20
while [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
Run Code Online (Sandbox Code Playgroud)
脚本没有结束.
这是否意味着我们不能在bash中进行一段时间的反向循环?
Oli*_*rth 38
while条件为真时运行循环. until运行循环,直到条件为真(即当条件为假).
请参阅http://www.gnu.org/software/bash/manual/bashref.html#Looping-Constructs.
Man*_*nde 14
当条件为真时,循环执行代码块(包含在do ... done中)并继续执行,直到条件变为false.一旦条件变为假,则while循环终止.
直到Loop在条件为假时执行代码块(包含在do ... done中)并继续执行该条件直到条件变为真.一旦条件变为真,则直到循环终止.
COUNTER=20
while [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,while中提到的条件,即[$ COUNTER -lt 10],保持为false,因此while循环中的代码块根本不会运行.
基本上, while & Until 循环仅在满足初始条件时才会执行,想想 while 循环 while,如果当前条件满足,那么它才会工作。但是,until 循环将等待直到满足条件。例如。下面的代码会起作用,因为 5 小于 10,循环体会递增该值,直到恰好达到 10 为止,它将退出。
index=5
until [ $index -gt 10 ]
do
echo $index
let index+=1
done
Run Code Online (Sandbox Code Playgroud)
这个例子不起作用,因为 5 最初并不大于 10,只有在循环过程中它才变得更大。
index=5
while [ $index -gt 10 ]
do
echo $index
let index+=1
done
Run Code Online (Sandbox Code Playgroud)
顺便提一句:
COUNTER=20
while [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
Run Code Online (Sandbox Code Playgroud)
这不会永远执行。在第一次评估循环条件期间,计数器 (20) 不小于 10,因此它将立即终止。
| 归档时间: |
|
| 查看次数: |
38364 次 |
| 最近记录: |