bash for循环_Bash 中的 For 循环
循環(huán)是編程語言的基本概念之一。當(dāng)你想要一遍又一遍地運行一系列命令直到達到某個條件后終止退出時,循環(huán)很方便。
在諸如 Bash 之類的腳本語言中,循環(huán)對于自動執(zhí)行重復(fù)性任務(wù)非常有用。
在 Bash 腳本中有3個基本的循環(huán)結(jié)構(gòu),for 循環(huán), while 循環(huán),until 循環(huán)。
在本教程中,我們將介紹 Bash 中 for 循環(huán)的基礎(chǔ)知識以及用于改變循環(huán)流的 break 和 continue 語句。
標(biāo)準 Bash for 循環(huán)
for 循環(huán)遍歷項列表并執(zhí)行給定的命令集。
Bash for 循環(huán)采用以下形式:
for item in [LIST]do [COMMANDS]done列表可以是由空格分隔的一系列字符串,一系列數(shù)字,命令輸出,數(shù)組等。
循環(huán)遍歷字符串
在下面的示例中,循環(huán)將遍歷字符串列表中的每個項目,使用變量 element 代表當(dāng)前項目。
for element in Hydrogen Helium Lithium Berylliumdo echo "Element: $element"done循環(huán)將產(chǎn)生以下輸出:
Element: HydrogenElement: HeliumElement: LithiumElement: Beryllium循環(huán)遍歷數(shù)字范圍
您可以使用序列表達式通過定義范圍的起點和終點來指定數(shù)字或字符的范圍。序列表達式采用以下形式:
{START..END}在下面的示例中,循環(huán)將遍歷從 0 到 3 的所有數(shù)字。
for i in {0..3}do echo "Number: $i"doneNumber: 0Number: 1Number: 2Number: 3從 Bash 4 開始,還可以在使用范圍時指定增量。表達式采用以下形式:
{START..END..INCREMENT}for i in {0..20..5}do echo "Number: $i"doneNumber: 0Number: 5Number: 10Number: 15Number: 20循環(huán)數(shù)組元素
您還可以使用 for 循環(huán)迭代元素數(shù)組:
在下面的示例中,我們定義一個數(shù)組 BOOKS 并迭代數(shù)組的每個元素。
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby')for book in "${BOOKS[@]}"; do echo "Book: $book"doneBook: In Search of Lost TimeBook: Don QuixoteBook: UlyssesBook: The Great GatsbyC 風(fēng)格的 Bash for 循環(huán)
C-style for 循環(huán)的語法采用以下形式:
for ((INITIALIZATION; TEST; STEP))do [COMMANDS]doneINITIALIZATION 部分僅在循環(huán)開始時執(zhí)行一次。然后,評估 TEST 部分。如果為假,則 for 循環(huán)終止。如果 TEST 為真,則執(zhí)行 for 循環(huán)體內(nèi)的命令并更新 STEP 部分。
在下面的代碼中,循環(huán)通過初始化星型 i = 0 ,然后在每次迭代之前檢查是否 i ≤ 10 。如果為 true ,則打印當(dāng)前值 i 并將變量遞增 i 1 (i++) ,否則循環(huán)終止。
for ((i = 0 ; i <= 1000 ; i++)); do echo "Counter: $i"done循環(huán)迭代 1001 次并將產(chǎn)生以下輸出:
Counter: 0Counter: 1Counter: 2...Counter: 998Counter: 999Counter: 1000break 和 continue
break 和 continue 語句可用于控制 for 循環(huán)執(zhí)行。
break 語句
break 語句終止當(dāng)前循環(huán)并將程序控制傳遞給終止語句后面的語句。它通常用于在滿足某個條件時終止循環(huán)。
在下面的示例中,一旦當(dāng)前迭代項等于 ‘Lithium’ ,循環(huán)的執(zhí)行將終止。
for element in Hydrogen Helium Lithium Beryllium; do if [[ "$element" == 'Lithium' ]]; then break fi echo "Element: $element"doneecho 'All Done!'Element: HydrogenElement: HeliumAll Done!continue 語句
continue 語句退出循環(huán)的當(dāng)前迭代,并將程序控制傳遞給循環(huán)的下一次迭代。
在下面的示例中,我們迭代一系列數(shù)字,當(dāng)當(dāng)前迭代項等于 ‘2’ 時, continue 語句將導(dǎo)致執(zhí)行返回到循環(huán)的開頭并繼續(xù)下一次迭代。
for i in {1..5}; do if [[ "$i" == '2' ]]; then continue fi echo "Number: $i"doneNumber: 1Number: 3Number: 4Number: 5For 循環(huán)示例
重命名文件名中包含空格的文件
下面的示例演示如何使用 Bash for 循環(huán)通過將空格替換為下劃線來重命名當(dāng)前目錄中的所有文件,并在其名稱中包含空格。
for file in * *; do mv "$file" "${file// /_}"done讓我們逐行分解代碼:
- 第一行創(chuàng)建一個 for 循環(huán),并遍歷其名稱中帶有空格的所有文件的列表。表達式 * * 創(chuàng)建列表。
- 第二行適用于列表中的每個項目,并將文件移動到新的文件,用下劃線 (_) 替換空格。該部分 ${file// /_ } 使用 shell 參數(shù)擴展來用字符串替換參數(shù)中的模式。
- done 表示循環(huán)段的結(jié)束。
更改文件擴展名
以下示例顯示如何使用 Bash for 循環(huán)通過將文件擴展名從 .jpeg 替換為 .jpg 來重命名當(dāng)前目錄中以 .jpeg 結(jié)尾的所有文件。
for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg"done讓我們逐行分析代碼:
- 第一行創(chuàng)建一個 for 循環(huán),并遍歷一個包含 .jpeg 結(jié)尾的所有文件的列表。
- 第二行適用于列表中的每個項目,并將文件移動到一個用 .jpg 替換 .jpeg 的新文件。該部分 ${file%.jpeg }使用 shell 參數(shù)擴展從文件名中刪除 .jpeg 部分。
- done 表示循環(huán)段的結(jié)束。
結(jié)論
到目前為止,您應(yīng)該很好地理解如何使用 bash for 循環(huán)遍歷列表。
總結(jié)
以上是生活随笔為你收集整理的bash for循环_Bash 中的 For 循环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做了三年Java,java参考文献近五年
- 下一篇: stm32正交编码器 原理图_恶劣环境下