Shell 脚本应用(三)

news2024/11/24 11:10:23

使用 for 循环语句

for语句的结构

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

上述语句结构中,for 语句的操作对象为用户指定名称的变量,并通过 in关键字为该变量预先设置了一个取值列表,多个取值之间以空格进行分隔,位于do… 中的执行语句需要引用变量以完成相应的任务。 

for语句应用示例

        根据姓名列表批量添加用户 根据人事部门给出的员工姓名的拼音列表,在Linux服务器中添加相应的用户账号,初始密码均 设置为“123456”.其中,员工姓名列表中的账号数量并不固定,而且除了要求账号名称是拼音之外, 并无其他特殊规律。 针对上述要求,可先指定员工列表文件users,txt,然后编写一个名为uaddfor.sh 的 Shell 脚本, 从users.txt 文件中读取各用户名称,重复执行添加用户、设置初始密码的相关操作

        

若要删除uaddfor.sh 脚本所添加的用户,只需参考上述脚本代码,将for循环体中添加用户的命令 序列改为删除用户的操作即可。例如,建立一个名为udelfor.sh的脚本如下所示。

使用while 循环语句 

while 语句的结构

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

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

 

while 语句应用示例 

        批量添加规律编号的用户 在一些技术培训和学习领域,出于实验或测试的目的,需要批量添加用户账号,这些用户的名 称中包含固定的前缀字串,并按照数字顺序依次进行编号,账号的数量往往也是固定的.例如,若 要添加20个用户,名称依次为stu1stu2.…、stu20.可以参考以下操作。

上述脚本代码中,使用变量i来控制用户名称的编号,初始赋值为1,并且当取值大于20时终 止循环。在循环体内部,通过语句“leti++”(等同于i=‘expr si+1)来使变量i的值增加1. 因此当执行第一次循环后i的值将变为2.执行第二次循环后i的值将变为3.……依此类推。 测试并确认 uaddwhile.sh脚本的执行结果如下所示.

若要删除uaddwhile.sh脚本所添加的用户,只需参考上述脚本代码,将while循环体中添加用户 的命令序列改为删除用户的操作即可。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1327888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零实现一套低代码(保姆级教程) --- 【3】实现Button组件和画布区的拖拽

摘要 目前是每天更新一篇, 因为我不止要写文章,这些代码也是我正在敲的。可能速度没有那么快,但是这个频率感觉还是可以的。 本篇是这个系列的第三篇,如果你是第一次看到这个文章,那你应该会对低代码有那么一丢丢兴趣…

ros2 学习11-通信中动作的定义及自定义action 交互示例

机器人是一个复杂的智能系统,并不仅仅是键盘遥控运动、识别某个目标这么简单,我们需要实现的是送餐、送货、分拣等满足具体场景需求的机器人。 在这些应用功能的实现中,另外一种ROS通信机制也会被常常用到——那就是动作。从这个名字上就可以…

【krita】实时绘画 入门到精通 海报+电商+装修+人物

安装插件 首先打开comfyUI,再打开krita,出现问题提示, 打开 cd custom_nodes 输入命令 安装控件 git clone https://github.com/Acly/comfyui-tooling-nodes.git krita基础设置 设置模型 设置lora (可设置lora强度 增加更多…

解锁高效工作!5款优秀工时管理软件推荐

工时管理,一直是让许多企业和团队头疼的问题。传统的纸质工时表、复杂的电子表格,不仅操作繁琐,还容易出错。幸好,随着科技的进步,我们迎来了工时管理软件的春天。今天,就让我们一起走进这个新时代&#xf…

蛮力法之背包问题

问题: 有 n 个重量分别是 w1,w2....,wn 的物品(物品编号为 1-n)它们的价值分别为 v1,v2,...,vn 给定一个容量为 W 的背包。设计从这些物品中选取一部分放入该背包的方案。 每个物品要么选中要么不选中【其实每个物品只有 1 件】,要求选中…

智慧互联网银行引领金融变革,开源网安VulHunter护航数字化发展

某银行作为国内知名的互联网银行,以构建“智慧型互联行”为总体战略目标,始终坚持科技赋能金融的理念。通过AI、大数据、云计算等数字技术与金融业务的探索融合,实现以更低的成本为客户提供便捷、高效和优质体验的互联网金融服务。 架构升级助…

基于ssm+vue的在线听书网站论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,书籍信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大…

如何利用烛龙和谷歌插件优化CLS(累积布局偏移) | 京东云技术团队

简介 CLS 衡量的是页面的整个生命周期内发生的每次意外布局偏移的最大突发性_布局偏移分数_。布局变化的发生是因为浏览器倾向于异步加载页面元素。更重要的是,您的页面上可能存在一些初始尺寸未知的媒体元素。这种组合意味着浏览器在加载完成之前无法确定单个元素…

HarmonyOS快速入门之开发准备

开发准备 本文档适用于HarmonyOS应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用(如下图所示),快速了解工程目录的主要文件,熟悉HarmonyOS应用开发流程。 在开始之前,您需要了解有关HarmonyOS应用的…

EOCR-i3M420/iFM420施耐德智能通讯保护继电器产品简介

EOCR-i3M420/iFM420是施耐德EOCR的新一代电子式电动机保护器产品,具有过电流、欠电流、缺相、逆相、堵转、失速、三相不平衡等保护功能,并具有4-20mA电流输出功能。EOCR-i3M420/iFM420是通讯型产品,提供Modbus RTU通讯协议,RS485接…

nodejs+vue+微信小程序+python+PHP兴趣趣班预约管理系统设计与实现-计算机毕业设计推荐

当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。 软件信息技术能够覆盖社会各行业领域是时代的发展要求&…

Shiro的认证与授权过程的401自定义信息返回格式

spring boot与shiro整合的很多这个不用多赘述,主要分享下过滤器这块 shiro中的部分过滤器 anon过滤器:用于处理匿名访问,即不需要身份验证的URL。 authc过滤器:用于进行身份验证,如果身份验证失败,将会返…

ModuleNotFoundError: No module named ‘tensorflow‘

直接运行pip install tensorflow安装成功之后,发现版本是tensorflow2.15.0 python的版本是3.9版本 导入包:import tensorflow 打包xxx.exe,调用之后提示错误 ModuleNotFoundError: No module named tensorflow 最后发现特定的python的版本对应特定的t…

Qt 6.3 学习笔记

文章目录 Qt的安装和配置创建一个Qt项目信号和槽布局和控件绘图和动画数据库和网络 Qt是一个跨平台的C图形用户界面应用程序开发框架。它提供了创建GUI应用程序的工具和库。Qt 6.3是Qt的最新版本,引入了许多新特性和改进。在这个章节中,我们将详细介绍如…

DRF从入门到精通二(Request源码分析、DRF之序列化、反序列化、反序列化校验、序列化器常用字段及参数、source、定制字段、保存数据)

文章目录 一、Request对象源码分析区分原生request和新生request新的request还能像原来的reqeust一样使用吗源码片段分析总结: 二、DRF之序列化组件序列化介绍序列化步骤序列化组件的基本使用反序列化基本使用反序列化的新增反序列化的新增删除单条 反序列化的校验序…

109基于MATLAB 中的设施布局设计和位置分配

基于MATLAB 中的设施布局设计和位置分配,通过PSO算法进行最佳位置匹配。程序已调通,可直接运行。 109设施布局设计和位置分配通 (xiaohongshu.com)

2023光伏“洗牌”,鼎捷数智方案如何助力企业抓住时代契机?

2023年的光伏行业正进入重新“洗牌”的阶段! 一方面,在“双碳政策”和全球能源危机的双重驱动下,我国光伏全产业链迎来高速增长,成为外贸出口“新三样”之一。光伏发电正加速取代传统化石能源,在电网中发挥着日益重要的…

vue3+Ts

安装 命令含义可参考typescript文章中的自动编译部分 npm create vitelatest vuets-project -- --template vue-tsvs code插件 Vue Language Features (Volar)对.vue文件进行实时的类型错误反馈TypeScript Vue Plugin (Volar) 用于支持在TS中import*.vue文件(mai…

【2023年网络安全优秀创新成果大赛专刊】银行数据安全解决方案(天空卫士)

在2023年网络安全优秀创新成果大赛,成都分站中,天空卫士银行数据安全方案获得优秀解决方案奖。与此同时,天空卫士受信息安全杂志邀请,编写《银行数据安全解决方案》。12月6日,天空卫士编写的《银行数据安全解决方案》做…

Debezium发布历史20

原文地址: https://debezium.io/blog/2017/09/25/streaming-to-another-database/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. 将数据流式传输到下游数据库 九月 25, 2017 作者: Jiri…