| |
| while 条件 |
| do |
| 循环体 |
| done |
| |
| |
| until 条件 |
| do |
| 循环体 |
| done |
简单示例
| [root@aliyun test] |
| |
| |
| 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] |
| 0 |
| 1 |
| 2 |
| ================ |
| 0 |
| 1 |
| 2 |
| [root@aliyun test] |
| continue:默认退出本次循环 |
| |
| break:默认退出本层循环 |
示例
| [root@aliyun test] |
| |
| |
| 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] |
| 0 |
| 1 |
| 3 |
| 4 |
| 5 |
| 6 |
| ================ |
| 0 |
| 1 |
| 3 |
| 4 |
| 5 |
| 6 |
| [root@aliyun test] |
案例0:红绿灯
| [root@egon ~] |
| |
| |
| 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 ~] |
| |
| timeout=3 |
| fails=0 |
| url=$1 |
| |
| while true |
| do |
| |
| 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 ~] |
| 错误次数=====>1 |
| 错误次数=====>2 |
| 错误次数=====>3 |
| 失败3次,超过最大次数 |
案例2:猜数字