while和until之间的真正区别是什么?
我想知道是否可以使用“until”进行越来越多的循环,并使用while进行降序循环。
因为我看到了如果我这样做
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER+=1
done
和这个
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
他们运作良好。
但如果我做相反的事情,例如:
COUNTER=20
while [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
脚本没有结束。
这是否意味着我们不能在bash中使用while进行反向循环?
答案 0 :(得分:38)
while
运行循环,而条件为真。 until
运行循环直到条件为真(即,而条件为false)。
请参阅http://www.gnu.org/software/bash/manual/bashref.html#Looping-Constructs。
答案 1 :(得分:12)
While循环执行代码块(包含在 do ... done 中)当条件为 true 时继续执行条件变为 false 。条件变为 false 后,while循环终止。
直到循环在条件 false 时执行代码块(包含在 do ... done 中)并继续执行条件变为 true 。条件变为 true 后,until循环终止。
COUNTER=20
while [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
在第一种情况下,while中提到的条件,即 [$ COUNTER -lt 10] ,保持为false,因此while循环中的代码块根本不会运行。
答案 2 :(得分:6)
他们正好相反:
bool b;
while(b) = until(!b)
答案 3 :(得分:4)
顺便说一下:
COUNTER=20
while [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
这不会永远执行。在第一次评估循环条件期间,计数器(20)不小于10,因此它将立即终止。
答案 4 :(得分:2)
基本上,while&直到循环只有在满足初始条件时才会执行,想一想while循环while,如果仅满足当前条件则它将起作用。但是,直到循环将等待直到满足条件为止。例如。以下内容将起作用,因为5小于10,循环主体将值递增,直到恰好退出该值为止为十。
index=5
until [ $index -gt 10 ]
do
echo $index
let index+=1
done
此示例不起作用,因为最初5并不大于10,仅在循环期间它才变得更大。
index=5
while [ $index -gt 10 ]
do
echo $index
let index+=1
done