15.2 while循环
15.2.1 while循环的语法
和for循环一样,while循环也是一种运行前测试语句,相比for循环来说,其语法更为简单,语法结构如下:
- while expression
do
command
done
首先while将测试expression的返回值,如果返回值为真则执行循环体,返回值为假将不执行循环。循环完成后进入下一次循环之前将再次测试。
如果已知循环次数,可以用计数的方式控制循环,即设定一个计数器,在达到规定的循环次数后退出循环。
- [root@localhost ~]# cat while01.sh
#!/bin/bash
#
定义计数器,循环次数为5
CONTER=5
while [[ $CONTER -gt 0 ]] #
测试CONTER
的值大于0
的情况下继续循环
do
echo -n "$CONTER "
let "CONTER-=1" #
每次循环CONTER
值减1
done
echo
[root@localhost ~]# bash while01.sh
5 4 3 2 1
下面的示例使用类while循环,同时计算1到100的和以及1到100的奇数和。
- [root@localhost ~]# cat while02.sh
#!/bin/bash
#sum01
用于计算1
到100
的和
#sum02
用于计算1
到100
的奇数和
sum01=0
sum02=0
i=1
j=1
while [[ "$i" -le "100" ]]
do
let "sum01+=i"
let "j=i%2" #
变量j
用来确定变量i
的奇偶性,如是奇数则余为1
if [[ $j -ne 0 ]]; then
let "sum02+=i"
fi
let "i+=1"
done
echo "sum01=$sum01"
echo "sum02=$sum02"
#
运行结果
[root@localhost ~]# bash while02.sh
sum01=5050
sum02=2500
下面的示例是利用while做猜数字游戏,只有当输入的数字和预设的数字一致时,才会停止循环。
- [root@localhost ~]# cat while03.sh
#!/bin/bash
PRE_SET_NUM=8
echo "Input a number between 1 and 10"
while read GUESS
do
if [[ $GUESS -eq $PRE_SET_NUM ]]; then
echo "You get the right number"
exit
else
echo "Wrong, try again"
fi
done
#
运行结果,输入6
和7
都提示输入错误,并要求继续输入
#
输入8
时,程序提示输入正确并退出循环
[root@localhost ~]# bash while03.sh
Input a number between 1 and 10
6
Wrong, try again
7
Wrong, try again
8
You get the right number