Shell脚本-嵌套循环应用案例

在Shell脚本编程中,嵌套循环是一种强大的工具,可以用于处理复杂的任务和数据结构。通过在一个循环内部再嵌套另一个循环,我们可以实现对多维数组、矩阵操作、文件处理等多种高级功能。本文将通过几个实际的应用案例来展示如何使用嵌套循环解决具体的编程问题。

案例一:打印乘法表

一个常见的应用是打印乘法表。通过嵌套循环,我们可以轻松地生成并打印出指定范围内的乘法表。

脚本示例:

#!/bin/bashfor ((i=1; i<=9; i++)); dofor ((j=1; j<=i; j++)); doprintf "%d*%d=%-4d" $j $i $((i*j))doneecho ""
done

说明:

  • 外层循环控制行数(即乘数),内层循环控制列数(即被乘数)。
  • printf函数用于格式化输出,使得每一项占据相同宽度,从而保持表格整齐。

案例二:遍历目录树

假设我们需要编写一个脚本来递归遍历目录及其子目录,并列出每个目录下的所有文件。

脚本示例:

#!/bin/bashtraverse_directory() {local directory=$1  # 获取传入的目录路径for file in "$directory"/*; doif [ -d "$file" ]; thenecho "Directory: $file"traverse_directory "$file"  # 递归调用自身以遍历子目录elif [ -f "$file" ]; thenecho "File: $file"fidone
}root_directory="/path/to/start/directory"
traverse_directory "$root_directory"

说明:

  • 使用递归函数traverse_directory来遍历目录树。
  • 对于每个项目,首先检查它是目录还是文件,然后根据类型采取相应的行动。

案例三:矩阵转置

给定一个二维数组(矩阵),我们可以使用嵌套循环将其转置(即将行变为列,列变为行)。

脚本示例:

#!/bin/bashmatrix=("1 2 3""4 5 6""7 8 9"
)rows=${#matrix[@]}
cols=$(echo "${matrix[0]}" | wc -w)echo "Original Matrix:"
for ((i=0; i<rows; i++)); doecho "${matrix[$i]}"
doneecho ""echo "Transposed Matrix:"
for ((j=0; j<cols; j++)); dorow=""for ((i=0; i<rows; i++)); dovalue=$(echo "${matrix[$i]}" | cut -d' ' -f$((j+1)))row="$row $value"doneecho "$row"
done

说明:

  • 首先确定矩阵的行列数。
  • 外层循环遍历每一列,内层循环遍历每一行,构建转置后的矩阵。

案例四:批量处理文件

假设我们需要对某个目录下的所有.txt文件进行批量处理,比如为每个文件添加前缀或后缀。

脚本示例:

#!/bin/bashprefix="backup_"directory="/path/to/txt/files"
cd "$directory" || exitfor file in *.txt; doif [ -f "$file" ]; thennew_name="${prefix}${file}"mv "$file" "$new_name"echo "Renamed '$file' to '$new_name'"# 进一步处理新命名的文件for operation in "operation1" "operation2"; docase $operation in"operation1")echo "Performing operation1 on $new_name";;"operation2")echo "Performing operation2 on $new_name";;esacdonefi
done

说明:

  • 外层循环遍历当前目录下的所有.txt文件,并重命名它们。
  • 内层循环对每个重命名后的文件执行一系列预定义的操作。

结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

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

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

相关文章

勘破养生伪常识,开启科学养生新篇

​在养生潮流风起云涌的当下&#xff0c;各种养生观点和方法层出不穷。但其中有不少是缺乏科学依据的伪常识&#xff0c;若不加分辨地盲目跟从&#xff0c;不仅难以实现养生目的&#xff0c;还可能损害健康。因此&#xff0c;勘破这些养生伪常识&#xff0c;是迈向科学养生的关…

Nacos-3.0.0适配PostgreSQL数据库

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

机器学习第三篇 模型评估(交叉验证)

Sklearn:可以做数据预处理、分类、回归、聚类&#xff0c;不能做神经网络。原始的工具包文档&#xff1a;scikit-learn: machine learning in Python — scikit-learn 1.6.1 documentation数据集:使用的是MNIST手写数字识别技术&#xff0c;大小为70000&#xff0c;数据类型为7…

如何在 IntelliJ IDEA 中编写 Speak 程序

在当今数字化时代&#xff0c;语音交互技术越来越受到开发者的关注。如果你想在 IntelliJ IDEA&#xff08;一个强大的集成开发环境&#xff09;中编写一个语音交互&#xff08;Speak&#xff09;程序&#xff0c;那么本文将为你提供详细的步骤和指南。 一、环境准备 在开始编…

AI大模型学习十四、白嫖腾讯Cloud Studio AI环境 通过Ollama+Dify+DeepSeek构建生成式 AI 应用-接入DeepSeek大模型

一、说明 需要阅读 AI大模型学习十三、白嫖腾讯Cloud Studio AI环境 通过OllamaDifyDeepSeek构建生成式 AI 应用-安装-CSDN博客https://blog.csdn.net/jiangkp/article/details/147580344?spm1011.2415.3001.5331 我们今天干点啥呢&#xff0c;跟着官网走 模型类型 在 Dify…

《Astro 3.0岛屿架构让内容网站“脱胎换骨”》

内容优先的网站越来越成为主流。无论是新闻资讯、知识博客&#xff0c;还是电商产品展示&#xff0c;用户都希望能快速获取所需内容&#xff0c;这对网站的性能和体验提出了极高要求。而Astro 3.0的岛屿架构&#xff0c;就像是为内容优先网站量身定制的一把神奇钥匙&#xff0c…

在 UniApp 中实现 App 与 H5 页面的跳转及通信

在移动应用开发中&#xff0c;内嵌 H5 页面或与外部网页交互是常见需求。UniApp 作为跨平台框架&#xff0c;提供了灵活的方式实现 App 与 H5 的跳转和双向通信。本文将详细讲解实现方法&#xff0c;并提供可直接复用的代码示例。 文章目录 一、 App 内嵌 H5 页面&#xff08;使…

springboot 实现敏感信息脱敏

记录于2025年4月28号晚上--梧州少帅 1. 定义枚举类&#xff1a; public enum DesensitizeType {NAME, EMAIL } 2. 创建自定义注解&#xff1a; 用于标记需要脱敏的字段及其类型。 Retention(RetentionPolicy.RUNTIME) JacksonAnnotationsInside JsonSerialize(using Desen…

SNMP协议之详解(Detailed Explanation of SNMP Protocol)

SNMP协议之详解 一、前言 SNMP&#xff0c;被形象地喻为网络世界大的工具箱&#xff0c;使他们能的“智慧守护者”&#xff0c;它为网络管理员装备了一套功能强够实现对网络设备状态的实时监控、性能数据的全面收集、远程配置的灵活管理以及故障事件的即时响应。借助SNMP&…

SpeedyAutoLoot

SpeedyAutoLoot自动拾取插件 SpeedyAutoLoot.lua local AutoLoot CreateFrame(Frame)SpeedyAutoLootDB SpeedyAutoLootDB or {} SpeedyAutoLootDB.global SpeedyAutoLootDB.global or {}local BACKPACK_CONTAINER BACKPACK_CONTAINER local LOOT_SLOT_CURRENCY LOOT_SLOT…

xe-upload上传文件插件

1.xe-upload地址&#xff1a;文件选择、文件上传组件&#xff08;图片&#xff0c;视频&#xff0c;文件等&#xff09; - DCloud 插件市场 2.由于开发app要用到上传文件组件&#xff0c;uni.chooseFile在app上不兼容&#xff0c;所以找到了xe-upload&#xff0c;兼容性很强&a…

Golang|外观模式和具体逻辑

最终返回的是Document的切片&#xff0c;然后取得Bytes自己再去做反序列化拿到文档的各种详细信息。 外观模式是一种结构型设计模式&#xff0c;它的目的是为复杂的子系统提供一个统一的高层接口&#xff0c;让外部调用者&#xff08;客户端&#xff09;可以更简单地使用子系统…

2025年3月AGI技术月评|技术突破重构数字世界底层逻辑

〔更多精彩AI内容&#xff0c;尽在 「魔方AI空间」 &#xff0c;引领AIGC科技时代〕 本文作者&#xff1a;猫先生 ——当「无限照片」遇上「可控试穿」&#xff0c;我们正在见证怎样的智能革命&#xff1f; 被低估的进化&#xff1a;开源力量改写游戏规则 当巨头们在AGI赛道…

可解释人工智能(XAI):让机器决策透明化

在人工智能&#xff08;AI&#xff09;技术飞速发展的今天&#xff0c;AI 系统已经广泛应用于金融、医疗、交通等多个关键领域。然而&#xff0c;随着 AI 系统的复杂性不断增加&#xff0c;尤其是深度学习模型的广泛应用&#xff0c;AI 的“黑箱”问题逐渐凸显。AI 系统的决策过…

【Go语言】ORM(对象关系映射)库

github.com/jinzhu/gorm 是 Go 语言中一个非常流行的 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;用于简化与关系型数据库的交互。以下是关于它的关键信息&#xff1a; 核心特点 全功能 ORM 支持主流数据库&#xff1a;MySQL、PostgreSQL、SQLite、SQL Server 等。…

大数据企业实验室管理的痛点 质检LIMS系统在大数据企业的应用

在数字化转型浪潮中&#xff0c;大数据企业正面临海量数据管理与质量控制的双重挑战。实验室作为数据生产的核心环节&#xff0c;其检测流程的规范化、数据处理的智能化直接关系到企业数据资产的可靠性。质检LIMS&#xff08;实验室信息管理系统&#xff09;通过整合实验室资源…

在Arduino U8g2库中显示中文的方法

U8g2库支持中文显示&#xff0c;但需要手动添加中文字体或使用内置的有限中文字符。以下是具体实现方法&#xff1a; 方法一 使用U8g2内置的中文字体&#xff08;不推荐&#xff09; 缺点&#xff1a;内置字体支持的汉字较少&#xff0c;可能无法显示所有需要的字符。不推荐。…

自动驾驶分级

一、美国 SAE J3016 Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles(2021) 1、驾驶自动化级别&#xff08;Levels of Driving Automation&#xff09; 共分为 6 个级别&#xff0c;从 无自动化&#xff08;0&#…

工业园区工厂企业数字IP广播应急呼叫对讲系统:数字IP广播极大提升工厂企业管理效率与应急响应效能

工业园区工厂企业数字IP广播应急呼叫对讲系统:数字IP广播极大提升工厂企业管理效率与应急响应效能 北京海特伟业科技有限公司任洪卓发布于2025年4月28日 在数字化转型浪潮下&#xff0c;IP应急广播呼叫对讲广播系统凭借其网络化、智能化、融合化、多元化等优势&#xff0c;已…

DNS主从同步及解析

DNS 域名解析原理 域名系统的层次结构 &#xff1a;DNS 采用分层树状结构&#xff0c;顶级域名&#xff08;如.com、.org、.net 等&#xff09;位于顶层&#xff0c;下面是二级域名、三级域名等。例如&#xff0c;在域名 “www.example.com” 中&#xff0c;“com” 是顶级域名…