细讲shell中的循环语句--for语句

目录

一:何为循环

1.循环概述

2.使用循环的好处

二:for循环语句

1.for语句的用法

​2. 语法结构

(1)一般格式

 (2)类C语言格式

(3)死循环

 3.事例

​4.常用转义符

5.制作九九乘法表

 三:跳出循环

1.coontinue跳出循环

2. coontinue 2  

 3.break跳出循环

 4.break 2

 总结:编写脚本的思路


一:何为循环

1.循环概述

循环是一种控制流程的结构,用于重复执行一段代码。

遍历是一种数据操作的过程,用于访间并处理数据结构中的每个元素。

在某些情况下,循环和遍历可以结合使用,以便在循环中遍历数据结构并对其进行操作。

循环(Loop)    是计算机编程中非常重要的一种结构,其主要目的是为了简化代码编写。

提高代码的重复利用率,以及提高程序的效率。

2.使用循环的好处

重复执行代码:通过使用循环,可以在程序中重复执行一段代码,从而避免代码的重复编写, 减少程序代码量,提高程序的可读性和可维护性。

简化程序逻辑:使用循环可以使程序逻辑更加简洁明了,提高程序的可读性和可理解性。降低代码出错的可能性。

 提高代码的重复利用率:通过将重复的代码封装在循环结构中,可以提高代码的重复利用率,减少代码冗余。

提高程序的效率:循环可以让程序自动化地执行重复任务,从而减少人工干预的次数,提高程序的效率和性能。

二:for循环语句

1.for语句的用法

读取不同的变量值,用来逐个执行同一组命令

for循环经常使用在已经zhidao要进行多少次循环的场景

格式:
for 变量名 in 取值列表
do
命令序列
done

2. 语法结构

(1)一般格式

 (2)类C语言格式

for ((expr1;expr2;expr3))
do
 echo
done

(3)死循环

for ((;;))

 3.事例

(1)批量创建用户,用户名存放在users.txt文件中,每一个初始密码为123456。

 (2)根据ip地址检测主机状态,IP地址存放在ipadds.txt文件中,每行一个,使用ping命令检测各主机的联通性,ping通的ip地址放到/opt/hosts文件中

 4.常用转义符

echo -n 表示不换行输出

echo -e 输出转义字符,将转义后的内容输出到屏幕上

常用的转义字符如下:
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。

\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。

\n 换行,被输出的字符从"\n"处开始另起一行。

\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;

\v 与\f相同;

\t 转以后表示插入tab,即横向制表符;

\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖

\\ 表示插入"\"本身;

5.制作九九乘法表

(1)制作长方形图表

 (2)制作等腰三角形图表

(3)制作九九乘法表

脚本解释:for i in {1..9}设置的是循环9次,

j<=i 表示的是在每次$i循环时$j小于等于$i,大于$i的$j不显示出来

j++是一个后缀自增运算符,表示将变量j的值加1,并返回原始值。

 (4)制作倒的九九乘法表

 三:跳出循环

1.continue跳出循环

表示满足continue条件是跳出循环,但是不影响后续循环执行

它的作用是在循环内部跳过本次循环并继续下一次循环

2. coontinue 2  

continue 2会跳过当前循环和两层外层循环的迭代

 3.break跳出循环

在循环内部,当执行到 break 命令时,会立即跳出当前的循环,停止循环执行,然后继续执行下一条指令。
可以使用 break 命令来提前终止循环,例如当达到特定条件时或者已经执行了足够的次数。

 4.break 2

break 2 会跳出当前循环和外层循环的迭代

 总结:编写脚本的思路

1.首先明确脚本的功能
   1.1案例:需求是创建用户并测试用户20个 
                 ->那肯定要用循环for、 while
                 ->知道需求含义来定义脚本的功能
   
2.编写脚本时会使用到哪些命令?
   2.1如上面的需求:就要使用useradd  passwd  let  echo  for  while 等命令

3.把变化的数据使用变量表示【记得要先定义哦】
   3.1固定长的定义变量、经常调用的参数可设变量
   3.2变化的定义变量

4.选择适合的流程控制
4.1【循环语句、双分支、多分支、case等一些控制语句 】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

利用Ad Hoc传感器网络上的局部信息组织全球坐标系(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 知道通信网络中节点的地理位置通常是有用的&#xff0c;但在每个节点上添加GPS接收器或其他复杂的传感器可能会很昂贵。 本文…

English Learning - L3 综合练习 1 VOA-Color 2023.04.26 周三

English Learning - L3 综合练习 1 VOA-Color 2023.04.26 周三 主题整体听一遍精听句子 1扩展 way of doing | way to do sth 句子 2扩展 Expression扩展 base 句子 3句子 4扩展 red-hot 句子 5句子 6扩展 fiery 句子 7句子 8句子 9句子 10句子 11扩展 born 句子 12句子 13句子…

平均10870元!2023一季度居民可支配收入公布(文末附最新招聘岗位)

今天是五一假期的第一天&#xff0c;暂别职场的打工人已经开始扎入人从众中放肆玩乐了&#xff0c;小编已经流下了羡慕的泪水。不过&#xff0c;今年的五一除了人流量上暴涨之外&#xff0c;出行成本也没被少吐槽&#xff0c;机票咱就不说了&#xff0c;酒店民宿的涨幅简直到了…

[AION]我眼中的《永恒之塔私服》

当我第一次看到《永恒之塔私服》我被它那华丽的画面吸引了。      三维做的很逼真&#xff0c;他的三维技术&#xff0c;华丽的三维景象&#xff0c;从maya设计者专业的角度上说&#xff0c;他是一部做工完美的游戏&#xff0c;不管是他的背景还是他的人物。都比以前很多游…

ROS导航包Navigation中的 Movebase节点路径规划相关流程梳理

本文主要介绍ROS导航包Navigation中的 Movebase节点中的路径规划的相关流程&#xff0c;并对其进行梳理概括&#xff0c;同时本文也是《ROS局部路径规划器插件teb_local_planner规划流程概括总结》部分的前述文章。 1、接收到目标点信息goal 在接收到目标点goal之后&#xff0c…

《站在巨人的肩膀上学习Java》

Java从诞生距今已经有28年了&#xff0c;在这段时间里&#xff0c;随着Java版本的不断迭代&#xff0c;Java新特性的不断出现&#xff0c;使得Java被使用的越来越广泛。在工程界Java语言一直是大家最喜欢的语言之一&#xff0c;Java一直排行在编程语言热门程度的前3名。 可想而…

基于rke部署的k8s集群如何配置kube-proxy工作在ipvs模式

kube-proxy默认工作在iptables模式下&#xff0c;在集群配置文件cluster.yml中添加如下配置项即可开启ipvs模式。然后执行 rke up 命令使配置生效。

开源Stylegan人脸生成预训练模型

最近在研究Stylegan对抗式图像生成网络&#xff0c;使用了网络的一些预训练模型生成相应的图像&#xff0c;感觉非常有趣。下面开源一些我找到了预训练模型和代码&#xff0c;供大家一起玩。 Stylegan2官方给出的是TensorFlow版本的&#xff0c;费了半天劲找出了pytorch版本 这…

SpringAOP

SpringAOP 一、AOP1. AOP简介1.1 AOP简介和作用1.2 AOP中的核心概念 2. AOP入门案例【重点】2.1 AOP入门案例思路分析2.2 AOP入门案例实现【第一步】导入aop相关坐标【第二步】定义dao接口与实现类【第三步】定义通知类&#xff0c;制作通知方法【第四步】定义切入点表达式、配…

【Java】类和对象,封装

目录 1.类和对象的定义 2.关键字new 3.this引用 4.对象的构造及初始化 5.封装 //包的概念 //如何访问 6.static成员 7.代码块 8.对象的打印 1.类和对象的定义 对象&#xff1a;Java中一切皆对象。 类&#xff1a;一般情况下一个Java文件一个类&#xff0c;每一个类…

【Hello Network】网络编程套接字(一)

作者&#xff1a;小萌新 专栏&#xff1a;网络 作者简介&#xff1a;大二学生 希望能和大家一起进步 本篇博客简介&#xff1a;简单介绍网络的基础概念 网络编程套接字&#xff08;一&#xff09; 预备知识源ip和目的ip端口号TCP和UDP协议网络中的字节序 socket编程接口socket常…

前端存储二:indexedDB

indexedDB 特点&#xff1a;以域名纬度&#xff0c;浏览器大量结构化数据存储方案&#xff0c;运行在浏览器的非关系型数据库。 大小&#xff1a;不会小于 250MB&#xff0c;支持二进制存储。 接口&#xff1a;异步接口&#xff0c;支持事物机制 这里使用网页脚本生成&#x…

2023五一数学建模B题完整模型代码【原创首发】

已经完成五一数学建模全部内容&#xff0c;大家可以文末查看&#xff01;&#xff01;供参考使用&#xff01; 摘要 随着网络购物的普及和发展&#xff0c;快递行业需求持续增长&#xff0c;对于快递公司来说&#xff0c;准确预测运输需求以及合理规划运输线路和仓库布局变得…

symfonos 2

目录 扫描 SMB SSH 提权 扫描 由于端口80是打开的,我们试图在浏览器中打开IP地址,但在网页上没有找到任何有用的信息。我们还尝试了dirb和其他目录暴力工具,但没有找到任何东西。 SMB 为了进一步枚举,我们使用Enum4Linux工具并找到了一些有用的信息。我们发现了一个名…

ChatGPT 平替天花板:HuggingFace 版 ChatGPT 来了,无需魔法无需等待直接起飞 ~

文章目录 ChatGPT 平替天花板&#xff1a;HuggingFace 版 ChatGPT 来了&#xff0c;无需魔法无需等待直接起飞 ~HuggingFace 简介HuggingChat 登场展望 ChatGPT 平替天花板&#xff1a;HuggingFace 版 ChatGPT 来了&#xff0c;无需魔法无需等待直接起飞 ~ 二话不说上链接 htt…

TryHackMe-Lunizz CTF(boot2root)

Lunizz CTF 端口扫描 循例nmap Web枚举 进80&#xff0c;apache默认页面 gobuster扫一下目录 /hidden一个文件上传点, 图片上传后无权访问/hidden/uploads/ /whatever一个假的命令执行点 /instructions.txt 由 CTF_SCRIPTS_CAVE 制作&#xff08;不是真实的&#xff09;感谢…

Java中几种常量池面试总结

字符串常量池&#xff08;string pool&#xff09; 字符串常量池是JVM为了提升性能和减少内存消耗针对字符串&#xff08;String类&#xff09;专门开辟的一块区域&#xff0c;主要目的是为了避免字符串的重复创建。 当需要使用字符串时&#xff0c;先去字符串池中查看该字符…

java spring 实现 下载hls(m3u8+ts)实时流并进行合并mp4和压缩

参考连接 链接: java下载m3u8视频&#xff0c;解密并合并ts&#xff08;三&#xff09; 链接: Java 下载 HLS (m3u8) 视频 首先需要了解什么是HLS 链接: HTTP Live Streaming (HLS) - 概念 链接: M3U8是什么 简单理解就是, m3u8文件存放着可供客户端播放TS 片段 简单一点…

新写了的 AOP 日志切面,方便以后直接使用。

前言 最近项目进入联调阶段&#xff0c;服务层的接口需要和协议层进行交互&#xff0c;协议层需要将入参[json字符串]组装成服务层所需的json字符串&#xff0c;组装的过程中很容易出错。入参出错导致接口调试失败问题在联调中出现很多次&#xff0c;因此就想写一个请求日志切…

二叉搜索树(BST)详解

文章目录 性质二叉搜索树的遍历遍历伪代码实现 二叉搜索树的查找伪代码实现 二叉搜索树最大元素伪代码实现 二叉搜索树最小元素伪代码实现 二叉搜索树的插入伪代码实现 二叉搜索树的删除删除叶子节点&#xff08;对应上面第一种情况&#xff09;&#xff1a;删除度为1的节点&am…