『忘了再学』Shell流程控制 — 38、while循环和until循环介绍
1、while循环
对while
循环来讲,只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止。和for
循环的第二种格式for((初始值;循环控制条件;变量变化))
类似。
我们写个1加到100的例子,这种例子虽然对系统管理帮助不大,但是对理解循环非常有帮助:
while
循环语法格式:
while [ 条件判断式 ]
do
程序
done
例子:1加到100。
#!/bin/bash
# 给变量i和变量s赋值
# 从1开始相加
i=1
# 求和变量
sum=0
# 执行while循环求和
# 如果变量i的值小于等于100,则执行循环
while [ $i -le 100 ]
do
sum=$(( $sum+$i ))
i=$(( $i+1 ))
done
# 输出求和结果
echo "The sum is:$sum"
说明:
while
循环在Shell脚本中应用的还是很少的,循环主要使用for
循环的第一种格式for 变量 in 值1 值2 值3 …
,所以我们能看懂就可以了。而
while
循环在写算法方面,会很方便。
2、until循环
until
循环和while
循环相反,until
循环时只要条件判断式不成立则进行循环,并执行循环程序。
一旦循环条件成立,则终止循环。
语法如下:
until [ 条件判断式 ]
do
程序
done
还是写从1加到100这个例子,注意和while
循环的区别:
#!/bin/bash
# 给变量i和变量s赋值
# 从1开始相加
i=1
# 求和变量
sum=0
# 执行while循环求和
# 如果变量i的值大于100,则执行循环
until [ $i -gt 100 ]
do
sum=$(( $sum+$i ))
i=$(( $i+1 ))
done
# 输出求和结果
echo "The sum is:$sum"
总结:
while
循环和until
循环特别容易写成死循环,忘记在循环体内写变量变化了,如i=i+1
或者i++
等,导致循环的判断条件一直符合条件,循环无法停止,非常消耗系统资源。