Shell until循环

Shell until循环教程

Shell 的 until 循环跟 while 循环正好相反,while 循环是当条件成立时,一直执行循环里的逻辑,而 until 循环是当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环。

until 的使用场景很少,一般使用 while 即可。

Shell until循环详解

语法

until condition do statements done

参数

参数 描述
until until 循环使用的关键字。
condition until 循环的条件,如果为假,则一直执行 until 循环。
do until 循环使用的关键字。
statements until 循环的条件不满足时,执行的代码块。
done until 循环使用的关键字。

说明

当 condition 条件为假时,一直执行缩进里面的 statements 代码块,直到 cond 条件为假,循环结束。

技术细节

until 循环的执行流程为:

先对 condition 进行判断,如果该条件不成立,就进入循环,执行 until 循环体中的语句(do 和 done 之间的语句),这样就完成了一次循环。

每一次执行到 done 的时候都会重新判断 condition 是否成立,如果不成立,就进入下一次循环,继续执行循环体中的语句,如果成立,就结束整个 until 循环,执行 done 后面的其它 Shell 代码。
如果一开始 condition 就成立,那么程序就不会进入循环体,do 和 done 之间的语句就没有执行的机会。

注意,在 until 循环体中必须有相应的语句使得 condition 越来越趋近于 “成立”,只有这样才能最终退出循环,否则 until 就成了死循环,会一直执行下去,永无休止。

案例

until循环数字

使用 until 循环,遍历数字

#!/bin/bash num=0 until ((num > 3)) do echo $num ((num++)) done

程序运行后,控制台输出如下:

23_Shell until循环.png

首先,我们定义了一个整型类型的 变量 num,并且赋值为 0,接着使用 until 循环来判断变量 num 是否大于 3,如果不成立,则一直执行 echo 的代码块,并且每次执行后都将 num 变量加 1。

until求和

使用 until 循环,求和

#!/bin/bash num=0 sum=0 until ((num > 100)) do ((sum+=num)) ((num++)) done echo $sum

程序运行后,控制台输出如下:

24_Shell until循环.png

首先,我们定义了一个整型类型变量 num 和 sum,并且都赋值为 0,接着使用 until 循环来判断变量 num 是否大于 100,如果不成立,则一直将当前 sum 的值加上 num,并且每次执行后都将 num 变量加 1。

整个 until 循环执行完毕后,执行 echo 的代码块,输出 Sum 的值。因为 echo 语句不是在 until 循环的大括号的代码块里面,而是在 until 循环代码块外面,因此 echo 是 until 循环执行完毕才会执行的。

Shell until循环总结

Shell 的 until 循环跟 while 循环正好相反,while 循环是当条件成立时,一直执行循环里的逻辑,而 until 循环是当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环。