华为云之shell脚本while循环实践【玩转华为云】
一、本次实践介绍
1.本次实践环境使用华为KooLabs云实验平台。
2.本次实践基于华为云ECS弹性云服务器。
1.2 本次实践目的
1.了解shell脚本的基本含义;
2.熟练使用Linux系统;
3.学会使用shell脚本中的while循环。
二、ECS云服务器介绍
- 弹性云服务器 ECS
弹性云服务器(Elastic Cloud Server, ECS)是一种云上可随时自助获取、可弹性伸缩的计算服务,可帮助您打造安全、可靠、灵活、高效的应用环境。
三、环境准备工作
3.1 预置实验环境
1.开始实验之前请点击手册上方“预置实验环境”按钮。
2.预置实验环境约等待【2分钟】后预置成功。
3.环境预置成功会生成名称为 “ecs-euler” 的弹性云服务器ECS、并创建好配置相关的VPC。
3.2 查看预置环境信息
查看预置环境信息
3.3 登录华为云
打开浏览器一般默认自动登录华为云,如果没有自动登录,选择【IAM用户登录】模式,使用账号登录。
四、连接ECS服务器
4.1 查看ECS服务器状态
进入ECS控制台的管理页面,查看ECS服务器状态。
4.2 复制弹性公网IP地址
复制ECS服务器的弹性公网IP地址。
4.3 远程连接ECS服务器
双击打开实验室桌面XFCE终端,输入命令连接ECS服务器,将EIP替换为复制的公网IP地址。
ssh root@EIP
4.4 检查服务器操作系统版本
检查ECS服务器的操作系统版本
[root@ecs-name ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
五、初识while循环
5.1 while循环介绍
hile循环属于条件式的执行流程,会反复判断指定的测试条件,只要条件成立即执行固定的一组操作,直到条件变化为不成立为止。所以while循环的条件一般通过变量来进行控制,在循环体内对变量值做相应改变,以便在适当的时候退出,避免陷入死循环。
5.2 编写基本脚本test01.sh
[root@ecs-name ~]# cat test01.sh
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo "$i"
done
5.3 执行test01.sh脚本
- 给脚本增加执行权限
chmod +x test01.sh
- 执行脚本test01.sh,发现脚本进入死循环,需要用ctrl+c终止脚本运行。
./test01.sh
5.4 修改test01.sh脚本
正确脚本编写,需要在加一个let i++让脚本不会陷入死循环
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo "$i"
let i++
done
- 重新执行脚本
[root@ecs-name ~]# ./test01.sh
1
2
3
4
5
六、while循环实例
6.1 while死循环示例
编写脚本test03.sh,一直输出hello world
#!/bin/bash
while :
do
echo "hello world"
done
- 执行test03脚本,用ctrl+c或ctrl+z终止脚本运行
sh test03.sh
6.2 while循环标准示例
[root@ecs-name ~]# cat sum.sh
#!/bin/bash
i=1
sum=0
while (( i<=100 ))
do
((sum+= i))
((i++))
done
echo "This sum is: $sum"
- 执行脚本
sh sum.sh
6.3 猜随机数的脚本
编写一个测随机数的脚本,直到用户猜对为止在这,可以使用系统自带变量RANDOM提取随机数(1-100),使用while制作死循环。
#!/bin/bash
num=$[RANDOM%100+1]
i=0
while :
do
read -p "Random numbers 1-100, you guess:" guess
let i++
if [ $guess -eq $num ];then
echo "guessed right"
echo "you guessed it $i times"
exit
elif [ $guess -gt $num ];then
echo "guess more"
else
echo "guess less"
fi
done
sh guess.sh
6.4 使用while编写一个99乘法表
使用while编写一个99乘法表使用echo -n 做横向输出。
[root@ecs-name ~]# cat multiply.sh
#!/bin/bash
i=1
j=1
while (($i<10))
do
while (($j<$i+1))
do
echo -n "$i*$j=$(($i*$j)) "
let j++
done
let i++
j=1
echo -e
done
- 执行脚本,打印99乘法表
sh multiply.sh
6.5 编写网段检测脚本
使用while做一个网段检测脚本,列出不在线的主机地址
root@ecs-name ~]# cat check.sh
#!/bin/bash
i=1
while [ $i -le 254 ]
do
IP="192.168.0.$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
- 执行脚本,由于订的规则是254会持续跑完刚网段254位,会列出不在线的主机地址。
sh check.sh
- 点赞
- 收藏
- 关注作者
评论(0)