流程控制之while循环
一 语法
# 一、while语句结构:条件为真时,执行循环体代码
while 条件
do
循环体
done
# 二、until语法结构:条件为假时,一直执行循环体代码,直到条件变为真
until 条件
do
循环体
done
简单示例
[root@aliyun test]# cat a.sh
#!/bin/bash
x=0
while (($x < 3))
do
echo $x
let x++
done
echo "================"
y=0
until (($y == 3))
do
echo $y
let y++
done
[root@aliyun test]# ./a.sh
0
1
2
================
0
1
2
[root@aliyun test]#
二 continue与break
continue:默认退出本次循环
break:默认退出本层循环
示例
[root@aliyun test]# cat a.sh
#!/bin/bash
x=0
while (($x < 10))
do
if (($x == 2));then
let x++
continue
fi
if (($x == 7));then
break
fi
echo $x
let x++
done
echo "================"
y=0
until (($y == 10))
do
if (($y == 2));then
let y++
continue
fi
if (($y == 7));then
break
fi
echo $y
let y++
done
[root@aliyun test]# ./a.sh
0
1
3
4
5
6
================
0
1
3
4
5
6
[root@aliyun test]#
三 案例
案例0:红绿灯
[root@egon ~]# cat 1.sh
#!/bin/bash
clear
while :
do
echo -e "\033[31m 红灯亮 \033[0m"
sleep 1
clear
echo -e "\033[32m 绿灯亮 \033[0m"
sleep 1
clear
echo -e "\033[33m 黄灯亮 \033[0m"
sleep 1
clear
done
[root@egon ~]#
案例1:监控web页面状态信息, 失败3次, 表示网站出现问题需要进行报警
[root@egon ~]# cat f.sh
#!/bin/bash
timeout=3
fails=0
url=$1
while true
do
# wget --timeout=$timeout --tries=1 $url -q
curl --connect-timeout $timeout $url &>/dev/null
if [ $? -ne 0 ]
then
let fails++
echo "错误次数=====>$fails"
else
echo "页面访问成功"
break
fi
if [ $fails -eq 3 ]
then
echo "失败3次,超过最大次数"
break
fi
done
[root@egon ~]# ./f.sh https://www.egon.com
错误次数=====>1
错误次数=====>2
错误次数=====>3
失败3次,超过最大次数
案例2:猜数字