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.pswp.cn/news/903278.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903278.shtml
英文地址,請注明出處:http://en.pswp.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” 是頂級域名…