对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
循环在写算法方面,会很方便。
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++
等,导致循环的判断条件一直符合条件,循环无法停止,非常消耗系统资源。