华为云之shell脚本while循环实践【玩转华为云】

举报
江湖有缘 发表于 2023/06/25 22:57:17 2023/06/25
【摘要】 华为云之shell脚本while循环实践【玩转华为云】

一、本次实践介绍

1.本次实践环境使用华为KooLabs云实验平台。
2.本次实践基于华为云ECS弹性云服务器。

1.2 本次实践目的

1.了解shell脚本的基本含义;
2.熟练使用Linux系统;
3.学会使用shell脚本中的while循环。

二、ECS云服务器介绍

  • 弹性云服务器 ECS

弹性云服务器(Elastic Cloud Server, ECS)是一种云上可随时自助获取、可弹性伸缩的计算服务,可帮助您打造安全、可靠、灵活、高效的应用环境。
image.png

三、环境准备工作

3.1 预置实验环境

1.开始实验之前请点击手册上方“预置实验环境”按钮。
2.预置实验环境约等待【2分钟】后预置成功。
3.环境预置成功会生成名称为 “ecs-euler” 的弹性云服务器ECS、并创建好配置相关的VPC。

image.png
image.png

3.2 查看预置环境信息

查看预置环境信息

image.png

3.3 登录华为云

打开浏览器一般默认自动登录华为云,如果没有自动登录,选择【IAM用户登录】模式,使用账号登录。

image.png

image.png

四、连接ECS服务器

4.1 查看ECS服务器状态

进入ECS控制台的管理页面,查看ECS服务器状态。

image.png

4.2 复制弹性公网IP地址

复制ECS服务器的弹性公网IP地址。

image.png

4.3 远程连接ECS服务器

双击打开实验室桌面XFCE终端,输入命令连接ECS服务器,将EIP替换为复制的公网IP地址。

ssh root@EIP

image.png

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

编写基本脚本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

image.png

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


image.png

6.2 while循环标准示例

编写一个从1加到100的shell脚本sum.sh

[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

image.png

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

image.png

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 

image.png

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


image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。