shell中的while循环结构猜测随机数
2020-07-26 15:07
621 查看
本案例要求编写2个使用while循环的脚本程序,分别实现以下目标:
• 提示用户猜测一个随机数,直到才对为止
• 检测192.168.4.0/24网段,列出不在线的主机地址
while循环属于条件式的执行流程,会反复判断指定的测试条件,只要条件成立即执行固定的一组操作,直到条件变化为不成立为止。所以while循环的条件一般通过变量来进行控制,在循环体内对变量值做相应改变,以便在适当的时候退出,避免陷入死循环。
while循环的语法结构如下所示:
1. while 条件测试 2. do 3. 命令序列 4. done 5. 6. 7. while : 8. do 9. 命令序列 10. done
步骤一:练习while循环基本用法
脚本1,无心的死循环脚本:
[root@dyy ~]# vim while01.sh #!/bin/bash i=1 while [ $i -le 5 ] do echo "$i" done [root@dyy ~]# chmod +x while01.sh [root@dyy ~]# ./while01.sh //死循环,需要使用Ctrl+C终止脚本
脚本2,有效循环脚本:
[root@dyy ~]# vim while02.sh #!/bin/bash i=1 while [ $i -le 5 ] do echo "$i" let i++ done [root@dyy ~]# chmod +x while02.sh [root@dyy ~]# ./while02.sh
脚本3,死循环的一般格式:
[root@dyy ~]# vim while03.sh #!/bin/bash while : do echo "hello world" done [root@dyy ~]# chmod +x while03.sh [root@dyy ~]# ./while03.sh //死循环,需要使用Ctrl+C终止脚本
步骤二:提示用户猜测一个随机数,直到才对为止
使用系统自带变量RANDOM提取随机数(1-100),使用while :制作死循环。
脚本编写参考如下:
1. [root@dyy ~]# vim guess.sh 2. #!/bin/bash 3. num=$[RANDOM%100+1] 4. i=0 5. while : 6. do 7. read -p "随机数1-100,你猜:" guess 8. let i++ //猜一次,计数器加1,统计猜的次数 9. if [ $guess -eq $num ];then 10. echo "恭喜,猜对了" 11. echo "你猜了$i次" 12. exit 13. elif [ $guess -gt $num ];then 14. echo "猜大了" 15. else 16. echo "猜小了" 17. fi 18. [root@dyy ~]# chmod +x guess.sh
执行脚本并验证结果:
1. [root@dyy ~]# ./guess.sh
步骤三:检测192.168.4.0/24网段,列出不在线的主机地址
1)任务需求及思路分析
要求的是“检测192.168.4.0/24网段,列出不在线的主机地址”。
检测目标是一个网段,其网络部分“192.168.4.”可以作为固定的前缀;而主机部分包括从1~254连续的地址,所以可结合while循环和自增变量进行控制。
2)根据实现思路编写脚本
1. [root@dyy ~]# vim chknet.sh 2. #!/bin/bash 3. i=1 4. while [ $i -le 254 ] 5. do 6. IP="192.168.4.$i" 7. ping -c 3 -i 0.2 -W 1 $IP &> /dev/null 8. if [ $? -eq 0 ] ; then 9. echo "Host $IP is up." 10. else 11. echo "Host $IP is down." 12. fi 13. let i++ 14. done 15. [root@dyy ~]# chmod +x chknet.sh
3)测试、验证脚本
1. [root@dyy ~]# ./chknet.sh 2. Host 192.168.4.1 is down. 3. Host 192.168.4.2 is down. 4. Host 192.168.4.3 is down. 5. Host 192.168.4.4 is down. 6. Host 192.168.4.5 is up. 7. .. .. 8. Host 192.168.4.250 is down. 9. Host 192.168.4.251 is down. 10. Host 192.168.4.252 is down. 11. Host 192.168.4.253 is down. 12. Host 192.168.4.254 is down.
相关文章推荐
- [9-13]Shell系列4――循环结构for、while、until及跳出循环
- shell脚本编程:条件测试,if选择结构,for循环,while循环
- shell脚本 for循环 while循环 case分支结构
- shell脚本编程:条件测试,if选择结构,for循环,while循环
- 3、shellwhile循环,C-for循环,until循环,case分支结构,流程控制语句
- java基础重温_03:switch结构、for循环(3种写法)、while循环、do...while循环、跳转控制语句(break、continue)、随机数Random类(3.19)
- shell循环结构之while循环
- 【Javase】笔记(011)循环结构之while循环
- shell中的3种for循环结构
- while循环结构
- for,while,do....while,三大循环结构的用法和对比!
- Shell for&while中的循环
- shell 脚本中while 循环只执行一次的问题
- 嵌入式 Shell中while循环语句
- Java 循环结构 - for, while 及 do...while
- 维护网站-shell中的case判断、for循环、while循环
- shell脚本编程-循环(for、while、until)
- C/C++为什么要开发do...while, while, for功能相同的循环结构?
- Day 4 : 循环结构(while、do…while、for)
- Java 循环结构for、do...while、while