一,for循环语句

在工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清 单检查各主机的存活状态,根据 IP 地址黑名单设置拒绝访问的防火墙策略等。

当面对各种列表重复任务时,使用简单的 if 语句已经难以满足要求,而顺序编写全部代码更是显得异常烦琐、困难重重。本节将要学习的 for 循环语句,可以很好地解决类似问

for 循环语句的语法结构如下所

for变量名 n取值列表

do

命令序列

done

1根据姓名列表批量添加用户

[root@localhost ~]# vi /root/users.txt  //用做测试的列表文件chenyedengchao zhangjie[root@localhost ~]# vi uaddfor.sh    //批量添加用户的脚本#!/bin/bashULIST=$(cat /root/users.txt) for UNAME in $ULISTdouseradd $UNAMEecho "123456" | passwd --stdin $UNAME &>/dev/null
done[root@localhost ~]# chmod +x uaddfor.sh[root@localhost ~]# ./uaddfor.sh  //测试并确认执行结果[root@localhost ~]# tail -3 /etc/passwdchenye:x1005:1005::/home/chenye:/bin/bash dengchaox:1006:1006::/home/dengchao:/bin/bash zhangji:x:1007:1007::/home/zhangji:/bin/bash

2,根据IP地址列表检查主机状态

[root@localhost ~]# vi /root/ipadds.txt //用做测试的列表文件
172.16.16.1
172.16.16.22
172.16.16.220
[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   //-c 发送包的数量;-i 发送 ping 包间隔;-W 超时时间if [ $? -eq 0 ]
then
echo "Host $IP is up."
else
echo "Host $IP is up."
fi done[root@localhost ~]# chmod +x chkhosts.sh[root@localhost ~]# ./chkhosts.sh //测试并确认执行结果
Host 172.16.16.1 is up.Host 172.16.16.22 is up.
Host 172.16.16.220 is down.

2,使用while循环语句

for 循环语句非常适用于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况, 则更适合使用另外一种循环——while 语句

使用 while 循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。在脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行。 因此,循环体内的命令序列中应包括修改测试条件的语句,以便在适当的时候使测试条件不再成立,从而结束循环。

while 循环语句的语法结构如下所示

while 条件测试操作

do

命令序列

done

1),批量添加规律编号的用户

[root@localhost ~]# vi uaddwhile.sh //批量添加用户的脚本#!/bin/bashPREFIX="stu"i=1while [ $i -le 20 ] douseradd ${PREFIX}$iecho "123456" | passwd --stdin ${PREFIX}$i &> /dev/null let i++done[root@localhost ~]# chmod +x uaddwhile.sh
[root@localhost ~]# ./uaddwhile.sh
[root@localhost ~]# grep "stu" /etc/passwd | tail -3 stu18:x:1022:1022::/home/stu18:/bin/bash stu19:x:1023:1023::/home/stu19:/bin/bash stu20:x:1024:1024::/home/stu20:/bin/bash

2)猜价格游戏

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

3,until循环语句

until 循环与 while 循环类似,while 循环能实现的脚本 until 同样也可以实现,但区别是

while 循环在条件为真是继续执行循环,而 until 则是在条件为假时执行循环。

until 循环语句的语法结构如下所示。

until 条件测试操作

do

命令序列

done

1),计算 1~50 的和

[root@localhost ~]# vi sum1to50_until_v1.sh#!/bin/bash i=0;s=0until [ $i -eq 50 ]
dolet "i=$i+1";let "s=$s+$i"
doneecho 'sum(1..50)='$s[root@localhost ~]# chmod +x sum1to50_until_v1.sh
[root@localhost ~]# ./sum1to50_until_v1.sh
sum(1..50)=1275

shell循环语句及实验相关推荐

  1. Shell循环语句(for循环;while循环;until循环)及中断(break和continue)

    Shell循环语句 for循环语句 例题1:批量添加用户 例题2:根据IP地址检查主机状态 while循环语句 例题1 猜价格游戏 例题二:批量添加用户 until循环语句 例题:计算1~50的值 中 ...

  2. shell 循环语句和函数

    循环语句 一.循环语句 1.for循环详解 2.while语句 3.until语句 4.双for循环 5.break和continue break,我们可以通过内外循环的输出来看break的特性. c ...

  3. Shell循环语句(for、while、until)及echo、IFS

    循环语句与函数 echo简述 循环语句 for循环语句 表达式一 表达式二 表达式三(变量值的迭代方式) 表达式四 批量添加用户且密码均为111222 批量检测指定ip地址连通性 while循环语句 ...

  4. shell 循环语句

    循环语句: for 语法结构: 1.列表循环 for variable in {list}docommand...done for variable in var1 var2 var3..docomm ...

  5. 简单易懂!!shell循环语句!for、while、until

    这里写目录标题 for循环语句 基本格式 流程路 while循环语句 while语句结构 流程图 until循环语句 until语句基本结构 流程图 for循环语句 在实际工作中,经常会遇到某项任务需 ...

  6. linux shell 循环语句 for while until

    for/do/done Shell脚本的for循环结构和C语言很不一样,它类似于某些编程语言的foreach循环.例如: #! /bin/shfor FRUIT in apple banana pea ...

  7. 【Linux】:shell循环语句

    运行Shell脚本有两种方法: 1.vi test.sh #! /bin/bash #编写内容 运行sh test.sh 2.chmod +x ./test.sh #脚本具有执行权限 ./test.s ...

  8. Shell循环语句详解--for循环

    文章目录 一.for循环基本格式 二.for循环脚本 2.1测试主机状态 2.2添加用户 2.3乘法表 三.总结 引言:在shell编程中,除了选择判断之外,对一些特殊情况需要进行循环操作,比如遍历目 ...

  9. 怎么编写Linux脚本循环语句,shell脚本及常用循环语句

    博文结构 什么是shell 简单编辑shell 循环语句 一.什么是shell及作用 Shell字面理解就是个"壳",是操作系统(内核)与用户之间的桥梁,充当命令解释器的作用,将用 ...

最新文章

  1. 六、OpenStack配置计算结点
  2. 教师php一对一修改成绩,【教师助手】班小二发成绩,一键导入成绩表格,自动一对一私密分发...
  3. Leetcode 136 Single Number 仅出现一次的数字
  4. 深度学习(二十六)Network In Network学习笔记-ICLR 2014
  5. ‘MicrosoftWebDriver.exe‘ executable needs to be in PATH.
  6. 爬虫入门四(多线程爬虫)
  7. 安装Vmware-tools时CD/DVD找不到Vmware-tools压缩包
  8. SQL 中OPENQUERY的使用
  9. SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名转...
  10. 零基础学python要多久-零基础如何学Python?小白学Python需要多久?
  11. hdu 4121 xiangqi 模拟
  12. shell中find详解
  13. Atitit.嵌入式web 服务器 java android最佳实践
  14. [BZOJ 3888] [Usaco2015 Jan] Stampede 【线段树】
  15. 几个比较好的app开发框架
  16. 一线大厂软件测试流程(思维导图)详解
  17. JAVA微信小程序医院预约挂号小程序系统毕业设计 开题报告
  18. 算法入门:日期计算(附蓝桥杯)
  19. 本科数学基础差的感觉 SLAM 很难,如何去提高?
  20. 利用公网IP访问部署在阿里云服务器的spring boot项目(一)

热门文章

  1. 报泰山学堂计算机条件,山大泰山学堂:大师培养“诺贝尔”的试验田
  2. 七夕礼物就送蓝牙耳机!音质好的无线蓝牙耳机推荐
  3. 东芝z20t笔记本怎样u盘启动详细图解
  4. 自定义导航栏左上角胶囊按钮返回、首页小房子
  5. 【必备算法】字符串(反转问题):LeetCode题 344. 反转字符串,541. 反转字符串 II,917. 仅仅反转字母
  6. ROS四旋翼无人机快速上手指南(1):无人机系统硬件概述与指南简介
  7. plt.plot()函数
  8. oracle 匹配汉字数字,在oracle数据库中一字段存在汉字和数字,取数字部分
  9. 推荐一位武汉大学的小姐姐
  10. 笔记本一般多少瓦?大概多少小时用一度电?