第三节:while循环

流程控制之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:猜数字

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术