当前位置: 首页 > news >正文

Linux Shell编程和循环语句

一.for循环语句

    • 1.for语句的结构
    • 2.for循环语句实例
      • ①根据姓名列表来批量创建多个用户
      • ②根据IP地址列表检查主机状态
  • 二.使用while循环语句
    • 1.while语句结构
    • 2.while循环语句应用
      • ①批量添加规律编号用户
      • ②猜价格游戏
  • 三 until循环语句
    • 1.until语句结构
      • ① 计算1-50的和

1.for语句的结构

使用 for 循环语句时,需要指定一个变量及可能的取值列表,针对每个不同的取值重复执行相同的命令序列,直到变量值用完退出循环。在这里,“取值列表”称为 for 语句的执行条件,其中包括多个属性相同的对象,需要预先指定(如通讯录、IP 黑名单)

for循环语句格式
for 变量名 in 取值列表
do命令序列
done

for 语句的执行流程:首先将列表中的第一个取值赋给变量,并执行 do…done 循环体中的命令序列:然后将列表中的第二个取值赋给变量,并执行循环体中的命令序列.…依此类推,直到列表中的所有取值用完,最后将跳至 done 语句,表示结束循环
请添加图片描述

2.for循环语句实例

①根据姓名列表来批量创建多个用户

创建了一个为users的文件里面存放了有多个用户文件中读取各用户名称,重复执行添加用户、设置初始密码的相关操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
若要删除脚本所添加的用户,只需参考上述脚本代码,将 for 循环体中添加用户的命令序列改为删除用户的操作即可
在这里插入图片描述
在这里插入图片描述

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

根据包含公司各服务器 IP 地址的列表文件,检査其中各主机的 ping 连通性,输出各主机是否启动、关闭。其中,服务器的数量并不固定,各服务器的IP 地址之间也无特殊规律。
执行shell脚本读取各服务器的 IP 地址,重复执行 ping 连通性测试,并根据测试结果输出相应的提示信息

在这里插入图片描述
创建完一个文件中有各种ip地址然后创建for循环检查文件中ip地址

在这里插入图片描述
执行结果如下
在这里插入图片描述

二.使用while循环语句

1.while语句结构

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

while 条件测试操作
do命令序列
done

while 语句的执行流程:首先判断 while 后的条件测试操作结果,如果条件成立,则执行 do…done循环体中的命令序列;返回 while 后再次判断条件测试结果,如果条件仍然成立,则继续执行循环体;再次返回到 while 后,判断条件测试结果,如此循环,直到 while 后的条件测试结果不再成立为止,最后跳转到 done 语句,表示结束循环
请添加图片描述
使用 while 循环语句时,有两个特殊的条件测试操作,即 true(真)和 false(假)。使用 true作为条件时,表示条件永远成立,循环体内的命令序列将无限执行下去,除非强制终止脚本(或通过 exit语句退出脚本);反之,若使用 false 作为条件,则循环体将不会被执行

2.while循环语句应用

①批量添加规律编号用户

在一些技术培训和学习领域,出于实验或测试的目的,需要批量添加用户账号,这些用户的名称中包含固定的前缀字串,并按照数字顺序依次进行编号,账号的数量往往也是固定的。例如,若要添加 20 个用户,名称依次为 stu1、stu2、…、stu20
在这里插入图片描述
在这里插入图片描述
使用变量 i 来控制用户名称的编号,初始赋值为 1,并且当取值大于 20 时终止循环。在循环体内部,通过语句“let i++”(等同于 i='expr $i +1)来使变量 i 的值增加 1,因此当执行第一次循环后 ì 的值将变为 2,执行第二次循环后 i 的值将变为 3,…,依此类推
在这里插入图片描述
在这里插入图片描述
以此类推删除1-20 zzh用户

②猜价格游戏

由脚本预先生成一个随机的价格数目(0~999)作为实际价格,判断用户猜测的价格是否高出或低于实际价格,给出相应提示后再次要求用户猜测;一直到用户猜中实际价格为止,输出用户共猜测的次数、实际价格,
针对上述要求,主要设计思路如下:通过环境变量 RANDOM 可获得一个小于 216的随机整数,计算其与 1000 的余数即可获得 0~999 的随机价格;反复猜测操作可以通过以 true 作为测试条件的while 循环实现,当用户猜中实际价格时终止循环;判断猜测价格与实际价格的过程采用 if 语句实现,嵌套在 while 循环体内;使用变量来记录猜测次数

在这里插入图片描述
在这里插入图片描述

三 until循环语句

1.until语句结构

until 循环与 while 循环类似,while 循环能实现的脚本 until 同样也可以实现,但区别是while循环在条件为真是继续执行循环,而 unti1 则是在条件为假时执行循环

while 条件测试操作
do命令序列
done

unti1 语句的执行流程:首先判断 unti1 后的条件测试操作结果,如果条件不成立,则执行 do…done循环体中的命令序列;返回 unti1 后再次判断条件测试结果,如果条件仍然不成立,则继续执行循环体:再次返回到 unti1 后,判断条件测试结果…如此循环,直到 unti1 后的条件测试结果成立为止,最后跳转到 done 语句,表示结束循环
请添加图片描述

① 计算1-50的和

在一些科学计算领域,经常会用到各种数的计算,自然数的求和操作是最简单的。本例中计算从 1 到58 的和,从1开始相加,采用循环的方式,每次循环后加 1,将得到的值加入计算的和中,数字运算采用的是 let 方式,直到加到 50 为止
在这里插入图片描述
在 i 的值小于 50 之前,每次循环 i 的值加 1,并且求出 s的值
在这里插入图片描述
谢谢大家

相关文章:

  • Sui Basecamp 2025 全栈出击
  • Spring 是什么?它解决了什么问题?
  • Django之账号登录及权限管理
  • GrassRoot备份项目
  • uniapp项目打包的微信小程序,设置uni-popup type=“bottom“时,底部有空隙
  • Qt实现车载多媒体项目,包含天气、音乐、视频、地图、五子棋功能模块,免费下载源文件!
  • Amazon Redshift 使用场景解析与最佳实践
  • 全连接神经网络学习笔记
  • 学习黑客什么是 ARP
  • AutoGen 框架解析:微软开源的多人 Agent 协作新范式
  • 每日学习:DAY24
  • Spring AI 入门(持续更新)
  • 深入解析建造者模式(Builder Pattern)——以Java实现复杂对象构建的艺术
  • 支持鸿蒙next的uts插件
  • 计算机学习路线与编程语言选择(信息差)
  • LLaMA模型本地部署全攻略:从零搭建私有化AI助手
  • 突破网络限制:Windows平台离线搭建Linux环境+Docker化部署AI知识库RAGFlow实战
  • 平板收银系统、国产系统,鸿蒙系统,小键盘的封装与应用—仙盟创梦IDE
  • Matlab 数控车床进给系统的建模与仿真
  • Java执行linux服务器本地命令
  • 七方面118项任务,2025年知识产权强国建设推进计划印发
  • 习近平同俄罗斯总统普京会谈
  • 苹果Safari浏览器上的搜索量首次下降
  • 绍兴柯桥:用一块布托起中国制造的新经纬
  • 《2025城市青年旅行消费报告》发布,解码青年出行特征
  • 欧盟公布终止进口俄能源计划,2027年为最后期限