使用while循环结构

2案例2:使用while循环结构

2.1问题

本案例要求编写2个使用while循环的脚本程序,分别实现以下目标:

  • 提示用户猜测一个随机数,直到猜对为止
  • 检测192.168.4.0/24网段,列出不在线的主机地址

2.2方案

while循环属于条件式和执行流程,会反复判断指定的测试条件,只要条件成立执行固定的一组操作,直到条件变化为不成立为止。所以while循环条件一般通过变量来进行控制,在循环体内对变量的值做相应改变,以便在适当的时候退出,避免陷入死循环。

while  条件测试
do
    命令序列
done
while :
do
    命令序列
done

2.3步骤

实现此案例需要按照如下步骤进行。

步骤一:练习while循环基本用法

脚本1,无心的死循环脚本:

 

[root@svr5 ~]# vim while01.sh
#!/bin/bash
i=1
while [ $i -le 5 ]
do
        echo "$i"
done
[root@svr5 ~]# chmod +x while01.sh
[root@svr5 ~]# ./while01.sh                //死循环,需要使用Ctrl+C终止脚本

脚本2,有效的循环脚本

[root@svr5 ~]# vim while02.sh
#!/bin/bash
i=1
while [ $i -le 5 ]
do
        echo "$i"
        let i++
done
[root@svr5 ~]# chmod +x while02.sh
[root@svr5 ~]# ./while02.sh

脚本3,死循环的一般格式

[root@svr5 ~]# vim while03.sh
#!/bin/bash
while :
do
        echo "hello world"
done
[root@svr5 ~]# chmod +x while03.sh
[root@svr5 ~]# ./while03.sh                //死循环,需要使用Ctrl+C终止脚本

步骤二:提示用户猜测一个随机数,直到猜对为止

使用系统自带变量RANDOM提取随机数(1-100),使用while循环:制作死循环。

脚本编写参考如下:

[root@svr5 ~]# vim guess.sh
#!/bin/bash
num=$[RANDOM%100+1]
i=0
while :
do
   read -p "随机数1-100,你猜:" guess
   let i++                                    //猜一次,计数器加1,统计猜的次数
   if [ $guess -eq $num ];then
        echo "恭喜,猜对了"
        echo "你猜了$i次"
        exit
   elif [ $guess -gt $num ];then
        echo "猜大了"
   else 
        echo "猜小了"
   fi 
[root@svr5 ~]# chmod +x guess.sh

执行脚本并验证结果:

[root@svr5 ~]# ./guess.sh

步骤三:检测192.168.4.0/24网段,列出不在线的主机地址

1)任务需求及思路分析

要求的是“检测192.168.4.0/24网段,列出不在线的主机地址”

检测的目标是一个网段,其网络部分“192.168.4.”可以作为固定的前缀;而主机部分包括从1~254连续的地址,所以可结合while循环和自增变量进行控制。

2)根据实际思路编写脚本

[root@svr5 ~]# vim chknet.sh
#!/bin/bash
i=1
while [ $i -le 254 ]
do
    IP="192.168.4.$i"
    ping -c 3 -i 0.2 -W 1 $IP &> /dev/null
    if [ $? -eq 0 ] ; then
        echo "Host $IP is up."
    else
        echo "Host $IP is down."
    fi
    let i++
done
[root@svr5 ~]# chmod +x chknet.sh 

3)测试、验证脚本

[root@svr5 ~]# ./chknet.sh
Host 192.168.4.1 is down.
Host 192.168.4.2 is down.
Host 192.168.4.3 is down.
Host 192.168.4.4 is down.
Host 192.168.4.5 is up.
.. ..
Host 192.168.4.250 is down.
Host 192.168.4.251 is down.
Host 192.168.4.252 is down.
Host 192.168.4.253 is down.
Host 192.168.4.254 is down.

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值