linux从0到1——shell编程7
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
在Shell编程中,while 语句用于在给定的条件为真时重复执行某一段代码。其语法格式如下:
while [condition]
do
# commands to be executed as long as the condition is true
done
1. 语法解析
- while: 表示循环的开始,后面跟一个条件。
- [condition]: 这是一个条件表达式,可以是任何有效的测试条件,通常使用 [ 和 ] 来表示条件。条件的返回值决定了是否继续循环。Shell 会根据条件的返回码来判断:如果返回值为 0,则条件为真;如果返回值非 0,则条件为假。
- do: 在条件为真时执行的命令块的开始。
- done: 结束 while 循环的标志。
2. 示例
基本示例
打印数字 1 到 5:
#!/bin/bash
i=1
while [ $i -le 5 ]
do
echo $i
((i++)) # 递增i
done

输出:

解释:
- 初始时,变量 i 的值是 1。
- while 循环检查 i 是否小于等于 5。
- 如果条件为真,则执行 echo $i 打印出当前的数字,并通过 ((i++)) 将 i 的值递增。
- 循环继续直到 i 的值大于 5。
另一个示例:读取用户输入
不断读取用户输入直到用户输入 "exit":
#!/bin/bash
while true
do
echo "请输入一个命令(输入 'exit' 退出):"
read input
if [ "$input" == "exit" ]; then
echo "退出程序。"
break # 使用 break 退出循环
fi
echo "你输入的命令是:$input"
done

解释:
- while true 是一个永真条件,意味着循环会一直执行,直到 break 语句触发退出。
- 每次输入后,通过 read 命令读取用户的输入。
- 如果输入为 "exit",则通过 break 跳出循环。

3. 常见条件表达式
在 while 语句中,条件通常会用到各种测试条件,最常见的有:
- 数值比较:
- -eq 等于
- -ne 不等于
- -gt 大于
- -lt 小于
- -ge 大于或等于
- -le 小于或等于
示例:检查数字是否大于 10:
i=5
while [ $i -le 10 ]
do
echo $i
((i++))
done

- 字符串比较:
- = 检查两个字符串是否相等
- != 检查两个字符串是否不相等
- -z 检查字符串是否为空
- -n 检查字符串是否非空
示例:检查输入字符串是否为 "yes":
while true
do
read -p "Do you want to continue? (yes/no): " answer
if [ "$answer" == "no" ]; then
echo "退出循环"
break
fi
done

4. 结束循环
除了通过条件表达式控制循环结束外,还可以使用以下方法显式地终止循环:
- break:立即退出循环。
- continue:跳过本次循环中的剩余部分,进入下一次循环。
5. while 和文件读取
while 循环常用于逐行读取文件内容:
#!/bin/bash
while read line
do
echo $line
done < input_file.txt

解释:
- read line 会逐行读取文件 input_file.txt,直到文件结束。
- 每次读取一行内容并打印。
6. 退出条件
如果不使用 break,循环会根据条件判断继续进行。当条件不满足时,while 循环自然结束。
总结
- while 循环可以执行重复的任务,直到某个条件变为假。
- 条件的判断依据是命令的退出状态(0 为真,非 0 为假)。
- 可以结合数值比较、字符串比较、文件读取等多种方式灵活使用。
while循环代码1
i=1
while (( $i<=10))
do
ehco $i
((i++))
done
首先通过i=1这一行,将变量i初始化为1,为后续的循环操作确定起始值。
循环条件判断:
while((Si<=10))是循环的条件判断部分。这里使用了双括号(())语法,它用于进行算术表达式的计算和判断。在每次循环开始前,都会检查|的值是否小等宇10。只要这个条件满定,循环体内部的代码就会被执行。
循环体执行内容:
在循环体内部,首先通过echo $i这一行,将当前i的值输出到控制台,这样就可以看到循环过程中;的变化情况。
接着,通过((i++))这一语句对变量i进行自增操作。这里的(C))语法同样用手算运算,1++表示将|的值增加1。每次循环结束后、的值就会比上一次循环时增加1,以便在下次循开始时进行新的条件判断。
while循环代码2
i=1
while (( $i<=10 ))
do
echo $i
let "i++"
done
变量初始化与循环条件判断:
这部分和第一种实现方式完全相同。先是通过i=1初始化变量i,然后通过,while((Si<=10))来判断循环是否继续进行克要i的值小等于10,循环就会持续。
循环体执行内容:
同样,在循环体中首先通过 echo Si输出当前i的值。
不同之处在手对变量;进行自增操作的语句。这里使用了let 命令,let “i++"的作用也是将变量i的值增加1。let 命令用于执行算术运算,它可以接受一个或多个算术表达式作为参数,
并对相关变量进行相应的运算操作。
总的来说,这两种实现方式都能达到通过while 循环输出1到10的整数的目的,只是在对变量进行自增操作时使用了不同的语法形式,但它们的功能是等效的。
相关文章:
linux从0到1——shell编程7
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...
自主研发,基于PHP+ vue2+element+ laravel8+ mysql5.7+ vscode开发的不良事件管理系统源码,不良事件管理系统源码
不良事件上报系统源码,不良事件管理系统源码,PHP源码 不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”,结合预存上百套已正在使用的模板࿰…...
【海思Hi3519DV500】双目网络相机套板硬件规划方案
Hi3519DV500双目网络相机套板是针对该芯片设计的一款 IP 编码板 PCBA,硬件接口支持双目sensor 接入,SDIO3.0 接口、USB2.0、USB3.0、UART 接口以及丰富的 IO 扩展应用,可根据各种使用场景设计相应扩展板,丰富外围接口,…...
【电源专题】BUCK电源SW电压的平均值为什么等于输出电压?
在Buck电源测试过程中,我们会去测试SW开关节点的波形。那么从SW波形中我们能看出什么呢? 首先查看SW波形一般会看SW频率,通过SW波形的频率知道目前芯片的运行状态是什么。比如PSM还是PWM模式。 此外,还会看SW波形的占空比,通过占空比我们可以知道目前输出的状态是怎么样的…...
SpringCloud Gateway转发请求到同一个服务的不同端口
SpringCloud Gateway默认不支持将请求路由到一个服务的多个端口 本文将结合Gateway的处理流程,提供一些解决思路 需求背景 公司有一个IM项目,对外暴露了两个端口8081和8082,8081是springboot启动使用的端口,对外提供一些http接口…...
【模块一】kubernetes容器编排进阶实战之pod的调度流程,pause容器及init容器
pod的调度流程及常见状态 pod的调度流 pod的常见状态 Unschedulable:#Pod不能被调度,kube-scheduler没有匹配到合适的node节点 PodScheduled:#pod正处于调度中,在kube-scheduler刚开始调度的时候,还没有将pod分配…...
PySpark3:pyspark.sql.functions常见的60个函数
目录 一、常见的60个函数 1、col 2、lit 3、sum 4、avg/mean 5、count 6、max 7、min 8、concat 9、substring 10、lower 11、upper 12、trim 13、ltrim 14、rtrim 15、split 16、explode 17、collect_list 18、collect_set 19、asc 20、desc 21、when 2…...
Python操作neo4j库py2neo使用之创建和查询(二)
Python操作neo4j库py2neo使用之创建和查询(二) py2neo 创建操作 1、连接数据库 from py2neo import Graph graph Graph("bolt://100.100.20.55:7687", auth(user, pwd), nameneo4j)2、创建Node from py2neo import Node, Subgraph # 创建…...
力扣11.23
1964. 找出到每个位置为止最长的有效障碍赛跑路线 你打算构建一些障碍赛跑路线。给你一个 下标从 0 开始 的整数数组 obstacles ,数组长度为 n ,其中 obstacles[i] 表示第 i 个障碍的高度。 对于每个介于 0 和 n - 1 之间(包含 0 和 n - 1&…...
golang实现TCP服务器与客户端的断线自动重连功能
1.服务端 2.客户端 生成服务端口程序: 生成客户端程序: 测试断线重连: 初始连接成功...
数据结构 (6)栈的应用举例
1. 递归调用 递归函数在执行时,会将每一层的函数调用信息(包括局部变量、参数和返回地址)存储在栈中。当递归函数返回时,这些信息会从栈中弹出,以便恢复之前的执行状态。栈的后进先出(LIFO)特性…...
谁的年龄最小(结构体专题)
题目描述 设计一个结构体类型,包含姓名、出生日期。其中出生日期又包含年、月、日三部分信息。输入n个好友的信息,输出年龄最小的好友的姓名和出生日期。 输入描述 首先输入一个整数n(1<n<10),表示好友人数,然后输入n行&…...
【论文笔记】LLaVA-KD: A Framework of Distilling Multimodal Large Language Models
Abstract 大语言模型(Large Language Models, LLM)的成功,使得研究者为了统一视觉和语言的理解去探索多模态大预言模型(Multimodal Large Language Models, MLLM)。 但是MLLM庞大的模型和复杂的计算使其很难应用在资源受限的环境,小型MLLM(s-MLLM)的表现…...
M|大脑越狱
rating: 7.0 豆瓣: 7.6 上映时间: “2015” 类型: M悬疑 导演: 约瑟夫怀特 Joseph White 主演: 亚历山大欧文 Alexander Owen爱德华富兰克林 Edward Franklin 国家/地区: 英国 片长/分钟: 20分钟 M|大脑越狱 想法不错,但是逻辑比较一般。属于…...
数据库编程(sqlite3)
一:数据库分类 常用的数据库 大型数据库 :Oracle商业、多平台、关系型数据库功能最强大、最复杂、市场占比最高的商业数据库 中型数据库 :Server是微软开发的数据库产品,主要支持windows平台 小型数据库 : mySQL是一个小型关系型…...
【C语言】关键字详解
【C语言】关键字详解 文章目录 [TOC](文章目录) 前言一、char1.定义字符串类型2.定义字符类型 二、short三、int四、long五、signed六、unsigned七、float八、double九、struct、union、enum十、void1.void用于函数声明,没有返回值的函数,其类型为 void。…...
什么是计算机网络
什么是计算机网络? 计算机网络的定义计算机网络的分类按覆盖范围分类按拓扑结构分类按通信传输介质分类按信号频带占用方式分类 计算机网络的功能信息交换资源共享分布式处理 计算机网络的组成计算机网络的定义计算机网络的分类按覆盖范围分类按拓扑结构分类按通信传…...
【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)
之前学过的kv类型上面的算子 groupby groupByKey reduceBykey sortBy sortByKey join[cogroup left inner right] shuffle的 mapValues keys values flatMapValues 普通算子,管道形式的算子 shuffle的过程是因为数据产生了打乱重分,分组、排序、join等…...
CSS3_BFC(十二)
BFC MDN对BFC的解释:块格式化上下文(Block Formating Context, BFC)是web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。 1、开启BFC flow-root对内容的影响是最低的&am…...
C0032.在Clion中使用MSVC编译器编译opencv的配置方法
使用MSVC编译器编译opencv的配置方法...
阿波罗登月,不可能:读心术与影子叙事 ——不是向全世界展示登月,而是向全世界注射登月
阿波罗登月,不可能:读心术与影子叙事 ——不是向全世界展示登月,而是向全世界注射登月 Jianbing Zhu 1^{1}1 1^{1}1 ECT-OS-JiuHuaShan 文明实验室 ORCID: 0009-0006-8591-1891 DOI: 10.5281/zenodo.20373157 Email: ect-os-jiuhuashanzoho…...
LangGraph状态机工程:构建复杂AI工作流的完整指南
传统RAG(检索增强生成)在处理简单的"单跳"问题时表现良好——“文章里提到了什么” “这个概念是什么意思”——但当问题涉及多个实体之间的关系、需要跨多个文档推理时,传统RAG就显得力不从心。GraphRAG(Graph-based R…...
FairyGUI Unity鼠标悬停与点击对象获取原理与实战
1. 这不是“加个OnMouseEnter就能用”的事:FairyGUI在Unity中处理鼠标交互的真实困境很多人第一次在Unity里集成FairyGUI,想实现“鼠标悬停显示提示”或“点击高亮当前按钮”,下意识就去翻Unity的MonoBehaviour文档,找OnMouseEnte…...
3分钟解锁网易云音乐NCM文件:ncmdumpGUI小白也能懂的完整教程
3分钟解锁网易云音乐NCM文件:ncmdumpGUI小白也能懂的完整教程 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经下载了网易云音乐的歌曲&a…...
通用物联网开发板设计:基于ESP8266的硬件集成与开发实践
1. 项目概述:为什么我们需要一块“通用”的物联网开发板?在捣鼓了几年物联网项目之后,我发现自己桌面上堆满了各种开发板:ESP8266、ESP32、Arduino Uno、STM32 Nucleo……每个项目都要重新连线、配置电源、焊接传感器接口…...
告别手动复制!用这个自定义编辑器脚本一键备份/克隆Unity Terrain Data
告别手动复制!用这个自定义编辑器脚本一键备份/克隆Unity Terrain Data在Unity关卡设计和技术美术的工作流中,地形数据的灵活复用往往意味着反复的手动操作——导出高度图、备份材质参数、复制植被分布,每个环节都可能成为效率瓶颈。想象这样…...
大厂校招变了:AI 能力正在进入笔试和面试
最近不少同学投递校招时,应该已经发现一个变化: 以前 JD 里写的是“熟悉 Python / Java / SQL / Office 优先”。 现在越来越多岗位开始出现新的描述: “熟练使用 AI 工具者优先” “了解大模型应用者优先” “具备 AI 辅助编程经验优先” “…...
第5章 薪资重构——AI时代的程序员价值重估
第5章 薪资重构——AI时代的程序员价值重估 核心问题:AI时代,程序员的薪资会发生怎样的变化?哪些人在涨薪?哪些人在降薪? 5.1 问题定义:薪资分化的真相是什么? 5.1.1 一个令人震惊的数据 2026年第一季度,一个对比让整个技术圈哗然: 同一家公司内部: - 一个AI方向…...
Redis在线工具终极指南:3分钟学会数据库操作,无需安装配置
Redis在线工具终极指南:3分钟学会数据库操作,无需安装配置 【免费下载链接】try.redis A demonstration of the Redis database. 项目地址: https://gitcode.com/gh_mirrors/tr/try.redis 还在为Redis环境配置而烦恼吗?还在为测试一个…...
LeetCode 80 · 删除有序数组中的重复项 II:通用模板的威力
LeetCode 26 要求每个元素最多出现一次,这道题放宽到最多出现两次。看起来只是把 1 改成了 2,但这个"小改动"背后藏着一个通用的快慢指针模板——把 2 换成任意整数 m,代码几乎不用动。这就是模板的威力:改一个数字&…...
