企业网络管理-Shell程序设计-循环与分支语句

 

目录

一、什么是Shell程序设计-循环与分支语句?

1. 循环语句:在Shell脚本中,常用的循环语句有for循环和while循环。通过循环语句,可以让一段代码重复执行多次,直到满足退出条件为止。

2. 分支语句:Shell脚本中的分支语句主要有if语句和case语句,用于根据条件执行不同的代码块。

二、学习目的:

三、实验内容:

四、实验步骤:

五、实验:

1.批量添加用户(for循环)

2.根据IP地址坚持主机状态

1.批量添加用户(while循环)

2.猜商品价格游戏

1.击键类型识别(case语句)

1.需求描述

2.编写脚本程序getarp.sh(程序执行需要点时间)

 六、实验结果与总结:

 七、实验反思与改进:

八、结论:

一、什么是Shell程序设计-循环与分支语句?

Shell程序设计中的循环与分支语句是用来控制程序执行流程的重要部分。

1. 循环语句:
在Shell脚本中,常用的循环语句有for循环和while循环。通过循环语句,可以让一段代码重复执行多次,直到满足退出条件为止。

- for循环:for循环按照指定的次数或列表中的元素进行循环。

for i in 1 2 3 4 5
do
    echo "Number $i"
done

- while循环:while循环根据条件是否满足来决定是否执行循环体内的代码。

count=0
while [ $count -lt 5 ]
do
    echo "Count is $count"
    ((count++))
done

2. 分支语句:
Shell脚本中的分支语句主要有if语句和case语句,用于根据条件执行不同的代码块。

- case语句:case语句根据不同的选项执行不同的代码块。

fruit="apple"
case $fruit in
    apple)
        echo "苹果";;
    banana)
        echo "香蕉";;
    *)
        echo "其他水果";;
esac

通过合理运用循环与分支语句,可以实现复杂的逻辑控制,使Shell脚本更加灵活和强大。

二、学习目的:

掌握Shell编程语言中的循环和分支语句,能够灵活运用这些语句来实现不同的逻辑控制和条件判断。

三、实验内容:

  1. 学习Shell中的循环语句,包括for循环、while循环和until循环。
  2. 掌握Shell中的分支语句,包括if语句、case语句等。
  3. 编写Shell脚本,利用循环和分支语句实现一些简单的任务,如文件操作、数据处理等。

四、实验步骤:

  1. 首先学习Shell中各种循环和分支语句的语法和用法。
  2. 编写简单的示例脚本,测试各种语句的效果,理解其运行原理。
  3. 设计实际的任务,如遍历目录中的文件、统计文件行数、搜索特定内容等,利用循环和分支语句编写相应的Shell脚本。
  4. 运行脚本,检查输出结果是否符合预期,调试修复可能存在的问题。

五、实验:

1.批量添加用户(for循环)

-用户名存放在users.txt文件中,每行一个

[root@localhost ~]# vi /root/users.txt
chenye
dengchao
zhangjie

-初始密码均设为123456

[root@localhost ~]# vi uaddfor.sh
#!/bin/bash
ULIST=$(cat /root/users.txt)
for UNAME in $ULIST
do
    useradd $UNAME
    echo "123456" | passwd --stdin $UNAME
done
[root@localhost ~]# sh uaddfor.sh
[root@localhost ~]# tail -3 /etc/passwd
chenye:x:1011:1011::/home/chenye:/bin/bash
dengchao:x:1012:1012::/home/dengchao:/bin/bash
zhangjie:x:1013:1013::/home/zhangjie:/bin/bash

结果:

2.根据IP地址坚持主机状态

-IP地址存放在ipadds.txt文件中,每行一个

[root@localhost ~]# vi /root/ipadds.txt
192.168.4.11
14.215.177.38
192.168.4.120

-使用Ping命令检测各主机的连通性

[root@localhost ~]# vi chkhosts.sh
#!/bin/bash
HLIST=$(cat /root/ipadds.txt)
for IP in $HLIST
do
    ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
    if [ $? -eq 0 ] ; then
        echo "Host $IP is up."
    else
        echo "Host $IP is down."
    fi
done
[root@localhost ~]#  sh chkhosts.sh
Host 192.168.4.11 is up.
Host 192.168.4.110 is down.
Host 192.168.4.120 is up.

结果:

 

1.批量添加用户(while循环)

-用户名称以stu开头,按数字顺序进行编号

-一共添加20个用户,即stu1、stu2、、、、、stu20

-初始密码均设为123456

[root@localhost ~]# vi uaddwhile.sh
#!/bin/bash
PREFIX="stu"
i=1
while [ $i -le 20 ]
do
    useradd ${PREFIX}$i
    echo "123456" | passwd --stdin ${PREFIX}$i &> /dev/null
    let i++
done
[root@localhost ~]# sh uaddwhile.sh
[root@localhost ~]# grep "stu" /etc/passwd | tail -3
stu18:x:1028:1028::/home/stu18:/bin/bash
stu19:x:1029:1029::/home/stu19:/bin/bash
stu20:x:1030:1030::/home/stu20:/bin/bash

结果:

 

2.猜商品价格游戏

通过变量RANDOM获得随机数

提示用户猜测并记录次数,猜中后退出循环

[root@localhost ~]# vi pricegame.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true
do
    read -p "请输入你猜测的价格数目:" INT
    let TIMES++
    if [ $INT -eq $PRICE ] ; then
        echo "恭喜你答对了,实际价格是 $PRICE"
        echo "你总共猜测了 $TIMES 次"
        exit 0
    elif [ $INT -gt $PRICE ] ; then
        echo "太高了!"
    else
        echo "太低了!"
    fi
done
[root@localhost ~]#sh pricegame.sh
商品实际价格为0-999之间,猜猜看是多少?
请输入你猜测的价格数目:500
太高了!
请输入你猜测的价格数目:250
太低了!
请输入你猜测的价格数目:375
太高了!
请输入你猜测的价格数目:280
太高了!
请输入你猜测的价格数目:265
太高了!
请输入你猜测的价格数目:253
恭喜你答对了,实际价格是 253
你总共猜测了 6 次

 结果:

1.击键类型识别(case语句)

提示用户输入一个字符

判断出该字符是字母、数字或者其他字符

[root@localhost ~]# vi hitkey.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
  [a-z]|[A-Z])
      echo "您输入的是 字母。"
      ;;
  [0-9])
      echo "您输入的是 数字。"
      ;;
  *)
      echo "您输入的是 空格、功能键或其他控制字符。"
esac
[root@localhost ~]# sh hitkey.sh
请输入一个字符,并按Enter键确认:k
您输入的是 字母 k 。
[root@localhost ~]# ./hitkey.sh
请输入一个字符,并按Enter键确认:8
您输入的是 数字 8 。
[root@localhost ~]# ./hitkey.sh
请输入一个字符,并按Enter键确认:^[[19~
您输入的是 空格、功能键或其他控制字符。

 结果:

1.需求描述

编写MAC地址采集脚本getarp.sh

实现思路

使用arping命令获取反馈的MAC地址(必须先安装net-tools才能使用相关命令)

使用while循环查询一个IP网段的所有MAC地址 

2.编写脚本程序getarp.sh(程序执行需要点时间)

验证获取的MAC地址列表(cat/etc/ethers)

#!/bin/bash
NADD="192.168.0."
FILE="/etc/ethers"
[ -f $FILE ] && /bin/cp -f $FILE $FILE.old
 HADD=1
while [ $HADD -lt 254 ]
 do
 arping -c 2 -w 1 ${NADD}${HADD} &> /dev/null
If [ $? -eq 0 ]
 then
arp -n |grep ${NADD}${HADD} |awk '{print $1,$3}' >> $FILE
fi
let HADD++
done

结果:

 六、实验结果与总结:

  1. 通过实验,掌握了Shell中循环和分支语句的基本用法,能够熟练地编写包含这些语句的Shell脚本。
  2. 了解了如何利用循环语句对数据进行迭代处理,以及如何利用分支语句进行条件判断和逻辑控制。
  3. 实验中遇到了一些常见问题,如语法错误、逻辑错误等,通过调试和查阅资料逐一解决,加深了对Shell编程的理解和掌握。

 七、实验反思与改进:

  1. 在编写复杂脚本时,应注意代码的结构和可读性,避免出现过于臃肿和难以理解的代码。
  2. 需要不断练习和实践,才能更加熟练地掌握Shell编程语言,提高编程水平和效率。
  3. 可以尝试挑战一些更加复杂的任务,如网络编程、系统管理等,拓展自己的编程能力和应用场景。

八、结论:

 通过本次实验,对Shell程序设计中的循环与分支语句有了更深入的了解,掌握了基本的用法和技巧,并且能够应用到实际的任务中去。继续不断学习和实践,将进一步提升自己的编程能力和应用水平。

  • 49
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值