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

SHELL笔记(循环)

在 Shell 编程中,循环结构是极为重要的一部分,它能够让我们轻松地重复执行特定的代码块,从而高效地处理各种重复性任务。本文将详细介绍 Shell 中常见的循环结构,包括 for 循环、while 循环和 until 循环,并通过具体的例子展示它们的用法和应用场景。

一、for 循环

for 循环通常用于遍历一个列表中的元素,这个列表可以是一组数字、字符串或者文件名等。其基本语法如下:

for 变量 in 列表
do# 循环体,执行的代码
done

例如,我们要打印从 1 到 5 的数字:

for i in 1 2 3 4 5
doecho $i
done

在这个例子中,i 是循环变量,它依次取列表 1 2 3 4 5 中的每个值,然后在循环体中打印出来。每次循环,i 的值都会发生变化,直到遍历完整个列表。

for 循环还常用于遍历文件列表。假设我们有一个目录下有多个 .txt 文件,我们要打印出每个文件的名称:

for file in *.txt
doecho $file
done

这里,file 变量会依次取当前目录下所有 .txt 文件的文件名,然后在循环体中输出。

二、while 循环

while循环会在条件为真时持续执行循环体中的代码。其语法结构为:

while 条件
do# 循环体
done

例如,我们来实现一个简单的计数器,从 1 开始计数,直到达到 10:

count=1
while [ $count -le 10 ]
doecho $countcount=$((count + 1))
done

在这个例子中,[ $count -le 10 ] 是条件判断,只要 count 的值小于等于 10,循环就会继续执行。在循环体中,先打印当前 count 的值,然后将 count 的值加 1。

while 循环还可以用于读取文件内容。假设我们有一个文本文件 data.txt,每行包含一个数字,我们要计算这些数字的总和:

total=0
while read line
dototal=$((total + line))
done < data.txt
echo "总和为: $total"

这里,read line 用于从文件 data.txt 中读取一行内容到变量 line 中,只要能成功读取到内容(即文件未读完),循环就会继续执行,在循环体中计算总和。

三、until 循环

until 循环与 while 循环相反,它会在条件为假时执行循环体,直到条件变为真。语法如下:

until 条件
do# 循环体
done

例如,我们再次实现计数器从 1 开始计数,直到达到 10,但使用 until 循环:

count=1
until [ $count -gt 10 ]
doecho $countcount=$((count + 1))
done

在这个例子中,[ $count -gt 10 ] 是条件判断,只要 count 的值不大于 10,循环就会继续执行,即当 count 大于 10 时循环停止。

四、循环控制语句

在循环中,我们还可以使用一些控制语句来改变循环的执行流程。

  • break 语句:用于立即终止循环,跳出循环体。例如:
for i in 1 2 3 4 5
doif [ $i -eq 3 ]; thenbreakfiecho $i
done

在这个 for 循环中,当 i 的值等于 3 时,break 语句被执行,循环立即终止,所以只会打印出 1 和 2。

  • continue 语句:用于跳过当前循环的剩余部分,直接进入下一次循环。例如:
for i in 1 2 3 4 5
doif [ $i -eq 3 ]; thencontinuefiecho $i
done

当 i 的值等于 3 时,continue 语句被执行,跳过本次循环中 echo $i 的操作,直接进入下一次循环,所以会打印出 1、2、4、5。

通过合理运用这些循环结构和控制语句,我们能够在 Shell 编程中灵活地处理各种重复任务,提高工作效率和代码的简洁性与可读性。无论是处理文件、管理系统任务还是进行数据计算,Shell 循环都能发挥重要的作用。

相关文章:

SHELL笔记(循环)

在 Shell 编程中&#xff0c;循环结构是极为重要的一部分&#xff0c;它能够让我们轻松地重复执行特定的代码块&#xff0c;从而高效地处理各种重复性任务。本文将详细介绍 Shell 中常见的循环结构&#xff0c;包括 for 循环、while 循环和 until 循环&#xff0c;并通过具体的…...

SpringBoot多文件上传

多文件上传是在单文件上传的基础上修改而来&#xff0c;不了解单文件上传可以参考上一篇。以下在将修改部分展示如下&#xff1a; 一、修改upload.html文件&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title&g…...

MyBatis-数据库连接池、属性文件config.properties、类名简化、MyBatis的整体架构

一、数据库连接池 1、概述 存储实现创建好的连接对象的容器 2、优点 避免了频繁创建和销毁连接对象 3、使用 在使用到连接对象时可在数据库连接池中直接获取 4、实现 不需要我们去实现,框架和一些第三方有现成的组件&#xff08;C3P0、ADCP、德鲁伊(阿里巴巴)&#xff…...

Flink-Source的使用

Data Sources 是什么呢&#xff1f;就字面意思其实就可以知道&#xff1a;数据来源。 Flink 做为一款流式计算框架&#xff0c;它可用来做批处理&#xff0c;也可以用来做流处理&#xff0c;这个 Data Sources 就是数据的来源地。 flink在批/流处理中常见的source主要有两大类…...

C0031.在Clion中使用mingw编译器来编译opencv的配置方法

mingw编译器编译opencv库的配置方法...

Android——连接MySQL(Java版)

Android——连接MySQL(Java版) 目录&#xff1a; Android——连接MySQL(Java版)一、JDBC1、什么是JDBC2、载入JDBC3、创建JDBC的工具类 二、使用数据库 一、JDBC 1、什么是JDBC JDBC全称Java Database Connectivity&#xff0c;译为Java语言连接数据库&#xff0c;是sun公司制…...

「四」体验HarmonyOS端云一体化开发模板——工程目录结构与云侧工程一键部署AGC云端

关于作者 白晓明 宁夏图尔科技有限公司董事长兼CEO、坚果派联合创始人 华为HDE、润和软件HiHope社区专家、鸿蒙KOL、仓颉KOL 华为开发者学堂/51CTO学堂/CSDN学堂认证讲师 开放原子开源基金会2023开源贡献之星 「目录」 「一」HarmonyOS端云一体化概要 「二」体验HarmonyOS端云一…...

Kotlin:后端开发的新宠

在当今的软件开发领域&#xff0c;编程语言的选择对于项目的成功至关重要。Kotlin&#xff0c;一种由 JetBrains 开发的编程语言&#xff0c;近年来在后端领域逐渐崭露头角&#xff0c;展现出了广阔的应用前景。 一、Kotlin 简介 Kotlin 是一种基于 JVM&#xff08;Java Virt…...

SSM全家桶 1.Maven

或许总要彻彻底底地绝望一次 才能重新再活一次 —— 24.11.20 maven在如今的idea中已经实现自动配置&#xff0c;不需要我们手动下载 一、Maven的简介和快速入门 Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件)&#xff0c;使用 Maven 可以自动化构建测试、打包和发…...

SpringBoot 集成 html2Pdf

一、概述&#xff1a; 1. springboot如何生成pdf&#xff0c;接口可以预览可以下载 2. vue下载通过bold如何下载 3. 一些细节&#xff1a;页脚、页眉、水印、每一页得样式添加 二、直接上代码【主要是一个记录下次开发更快】 模板位置 1. 导入pom包 <dependency><g…...

利用 Watchtower 自动监听并更新正在运行的 Docker 容器

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 大部分 VPS 和 NAS 用户或多或少都有用 Docker 来部署一些 Self-hosting 的服务&#xff0c;其中大部分项目都是开源项目&#xff0c;更新频率非常高&#xff0c;特别是一些版本 0.x 的项目&#xff0c;及…...

Nodejs开发仿马蜂窝旅游小程序API接口,服务器端开发,商家后台 Vue3+微信小程序+koa+mongodb+node.js

文章目录 &#x1f680; 开启您的互联网创业新篇章一、&#x1f525; 课程亮点&#xff1a;二、&#x1f310; 适合人群&#xff1a;学习这个课程后&#xff0c;您将会收获到三、旅游后台管理系统1.后台登录界面2.后台首页 四、前台旅游小程序1.首页展示2.目的地界面3.搜索功能…...

极限失控的大模型使电力系统面临的跨域攻击风险及应对措施

目录&#xff1a; 0 引言 1 就大模型发生极限失控的风险进行讨论的必要性、紧迫性 1.1 预训练的数据来源 1.2 能力涌现与不可解释性 1.3 大模型与物质世界的连接 1.4 数量效应与失控 1.5 大模型发生极限失控的风险 1.5.1 人工智能反叛所需要素能力的拼图 1.5.2 火种源…...

mybatis-plus方法无效且字段映射失败错误排查

问题&#xff1a; Invalid bound statement (not found): com.htlc.assetswap.mapper.WalletMapper.insert&#xff0c;并且select * 进行查询时带下划线的字段未成功映射。 排查&#xff1a; 1.检查WalletMapper接口&#xff0c;确保继承自BaseMapper 2.启用驼峰命名法映射。a…...

librdns一个开源DNS解析库

原文地址&#xff1a;librdns一个开源DNS解析库 – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 介绍 librdns是一个开源的异步多功能插件式的解析器&#xff0c;用于DNS解析。 源代码地址&#xff1a;GitHub - vstakhov/librdns: Asynchrono…...

Unity3D 逻辑服的Entity, ComponentData与System划分详解

前言 在Unity3D中&#xff0c;逻辑服(Entity, ComponentData和System)是一种非常高效的组件化设计模式&#xff0c;它可以帮助开发者更好地管理游戏中的实体和逻辑。本文将详细介绍Unity3D逻辑服的概念以及如何实现Entity、ComponentData和System的划分。 对惹&#xff0c;这…...

跟《经济学人》学英文:2024年11月23日这期 Why British MPs should vote for assisted dying

Why British MPs should vote for assisted dying A long-awaited liberal reform is in jeopardy in jeopardy&#xff1a;在危险中 jeopardy&#xff1a;美 [ˈdʒepərdi] 危险&#xff1b;危机&#xff1b;风险&#xff1b; 原文&#xff1a; THIS NEWSPAPER believes …...

基于阿里云服务器部署静态的website

目录 一&#xff1a;创建服务器实例并connect 二&#xff1a;本地文件和服务器share 三&#xff1a;关于IIS服务器的安装预配置 四&#xff1a;设置安全组 五&#xff1a;建站流程 六&#xff1a;关于备案 一&#xff1a;创建服务器实例并connect 创建好的服务器实例在云…...

【2024 Optimal Control 16-745】Ubuntu22.04 安装Julia

找不到Julia 内核 下载Julia curl -fsSL https://install.julialang.org | sh官网下载&#xff1a;Julia 安装 IJulia 打开 Julia REPL&#xff08;在终端中输入 julia&#xff09;并执行以下命令安装 IJulia&#xff1a; using Pkg Pkg.add("IJulia")这将为 Ju…...

nuget默认包管理格式:packages.config、packageReference区别

packages.config 和 PackageReference 是 NuGet 中的两种包管理格式&#xff0c;各有优劣&#xff0c;适用于不同的场景。以下是它们的详细对比&#xff1a; 1. packages.config 格式 这是 NuGet 的传统包管理格式&#xff0c;早期版本使用的默认方法。 特点 依赖声明文件&…...

PagedAttention 源码解析:KV Cache 怎么管理

前言 长序列推理的瓶颈不是计算&#xff0c;是显存。KV Cache 随序列长度线性增长&#xff0c;一个 LLaMA-7B 的请求&#xff0c;序列 4096 就要吃掉 2GB 显存。PagedAttention 的做法是把 KV Cache 切成小块按需分配&#xff0c;显存利用率从 40% 提到 90%。 下面从源码层面解…...

用机器学习与SHAP解析教育公平:巴西学生成绩预测模型实战

1. 项目概述&#xff1a;用数据透视巴西教育&#xff0c;一场关于公平的算法实验作为一名长期关注教育技术与数据分析的从业者&#xff0c;我始终对一个问题着迷&#xff1a;在一个学生背景千差万别的教育体系中&#xff0c;究竟哪些因素真正决定了他们的学业表现&#xff1f;是…...

SQL like 与 正则 区别

SQL 中的 LIKE 和正则表达式&#xff08;REGEXP 或 RLIKE&#xff09;都用于模式匹配&#xff0c;但它们在表达能力、语法复杂度、性能上有显著区别。核心区别一览表对比维度LIKE正则表达式匹配粒度通配符&#xff08;%、_&#xff09;元字符、量词、字符类等表达能力弱&#x…...

Qwen-Agent:企业级AI智能体框架的架构深度解析与实战指南

Qwen-Agent&#xff1a;企业级AI智能体框架的架构深度解析与实战指南 【免费下载链接】Qwen-Agent Agent framework and applications built upon Qwen>3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc. 项目地址: https://gitcode.…...

Unity2022数字孪生变电站工程包:URP优化+IEC104直连+Win11深度适配

1. 这不是个“能跑就行”的Demo&#xff0c;而是一套可交付的数字孪生工程基线“Unity源码&#xff1a;数字孪生变电站场景&#xff0c;支持Unity2022与Win11运行&#xff0c;完整包”——看到这个标题&#xff0c;我第一反应不是点开下载&#xff0c;而是下意识翻了翻发布者主…...

代码智能安全:对抗机器学习如何威胁与守护AI编程助手

1. 项目概述&#xff1a;代码智能时代的安全暗礁 作为一名在软件安全与AI交叉领域摸爬滚打了十多年的从业者&#xff0c;我亲眼见证了代码语言模型&#xff08;CLM&#xff09;从实验室的奇思妙想&#xff0c;迅速演变为GitHub Copilot、Amazon CodeWhisperer等生产力工具的核心…...

17.通杀安卓 /iOS 全机型!Linux 原生刷机方案,EDL 底层救砖 + 自动化源码开源

摘要 本文面向具备基础Linux命令行操作能力的开发者与维修工程师,系统阐述主流品牌Android与iOS设备刷机维修的底层原理与可落地方案。覆盖华为、小米、OPPO、vivo、一加及苹果设备,提供从Bootloader解锁、Recovery刷写、固件烧录到基带修复的完整技术栈。所有操作均基于USB…...

ChatGPT移动端隐私红线报告(2024Q2):麦克风/剪贴板/位置数据采集路径全曝光,3步彻底锁死敏感权限

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT移动端隐私红线报告&#xff08;2024Q2&#xff09;核心发现与风险定级 高危数据外泄通道实证 本季度对iOS与Android平台主流ChatGPT客户端&#xff08;含官方App v6.12.1及第三方封装SDK集成应…...

在自动化客服系统中集成多模型 API 以提升响应稳定性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在自动化客服系统中集成多模型 API 以提升响应稳定性 对于构建自动化客服系统的团队而言&#xff0c;服务的连续性与稳定性是核心诉…...

实测Taotoken聚合接口在高峰时段的延迟与稳定性表现

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 实测Taotoken聚合接口在高峰时段的延迟与稳定性表现 作为开发者&#xff0c;在将大模型能力集成到生产环境时&#xff0c;服务的稳…...