了解如何在 Shell 腳本中使用 Bash For 循環(huán)
在編程語(yǔ)言中,循環(huán)是必不可少的組件,當(dāng)您想要一遍又一遍地迭代代碼直到達(dá)到所需狀態(tài)時(shí),就會(huì)使用循環(huán)。
在 Bash 腳本中,循環(huán)起著與編程語(yǔ)言中相同的作用,用于自動(dòng)執(zhí)行重復(fù)任務(wù)。
在 Bash 腳本中,有 3 種類(lèi)型的循環(huán):for 循環(huán)、while 循環(huán)和until 循環(huán)。三元組用于迭代值列表并執(zhí)行給定的命令集。
在本指南中,我們將重點(diǎn)介紹 Linux 中的 Bash For Loop。
如前所述,for 循環(huán)迭代不同的值并執(zhí)行一組命令。
For 循環(huán)采用以下語(yǔ)法:
對(duì)于 value1 value2 value3 .. n 中的變量名
穿
命令1
命令2
命令
完畢
現(xiàn)在讓我們看一下 bash for 循環(huán)的一些示例用法。
循環(huán)中的慢速打擊
最簡(jiǎn)單的 For 循環(huán)采用以下基本形式。在此示例中,變量n返回基于括號(hào)的數(shù)值數(shù)組,并將其值打印到 stdout。
對(duì)于 {1234567} 中的 n;
穿
回顯$n
完畢
Bash For 循環(huán)和范圍
在前面的示例中,我們通過(guò) for 循環(huán)顯式輸入要返回的值,效果很好。但你只能想象,如果你迭代一百個(gè)值,那將是多么費(fèi)力和耗時(shí)。這會(huì)強(qiáng)制您輸入 1 到 100 之間的所有值。
要解決此問(wèn)題,請(qǐng)指定長(zhǎng)度。為此,請(qǐng)以雙空格指定起始編號(hào)和終止編號(hào)。
在此示例中,1 是該范圍中的第一個(gè)值,而 7 是最后一個(gè)值。
#!/bin/bash
對(duì)于 {1..7} 中的 n;
穿
回顯$n
完畢
一旦執(zhí)行了 shell 腳本,該范圍內(nèi)的所有值都會(huì)被寫(xiě)入,就像我們?cè)诤?jiǎn)單循環(huán)中所使用的那樣。
此外,我們可以在范圍末尾分配一個(gè)值,使 for 循環(huán)以增量步驟迭代這些值。
以下 bash 腳本打印 1 到 7 之間的值,從第一個(gè)值開(kāi)始,值之間有 2 個(gè)增量步驟。
#!/bin/bash
對(duì)于 {1..7..2} 中的 n;
穿
回顯$n
完畢
在上面的示例中,您可以看到循環(huán)將大括號(hào)中的值增加了 2 個(gè)值。
Bash For 循環(huán)和數(shù)組
您還可以使用 For 循環(huán)輕松地使用數(shù)組中顯示的值進(jìn)行迭代。在下面的示例中,for 循環(huán)迭代fruits 數(shù)組中的所有值并將它們打印到stdout。
#!/bin/bash
水果=(“藍(lán)莓”“桃子”“芒果”“菠蘿”“木瓜”)
對(duì)于 ${fruits[@]} 中的 n;
穿
回顯$n
完畢
@操作員看到或瞄準(zhǔn)所有對(duì)象。這允許單獨(dú)重復(fù)所有項(xiàng)目。
此外,您可以通過(guò)指定數(shù)組中的位置來(lái)訪問(wèn)單個(gè)對(duì)象。
例如,要訪問(wèn)“mango”組件,請(qǐng)將@員工替換為該組件在組中的位置(第一個(gè)元素以 0 開(kāi)頭,因此在本例中“mango”將由 2 表示)。
因此 for 循環(huán)。
#!/bin/bash
水果=(“藍(lán)莓”“桃子”“芒果”“菠蘿”“木瓜”)
對(duì)于 ${fruits[2]} 中的 n;
穿
回顯$n
完畢
C 風(fēng)格的 Bash In 循環(huán)
您可以使用循環(huán)中的更改來(lái)迭代不同的對(duì)象。這就是 C 風(fēng)格的 for 循環(huán)的用武之地。以下示例顯示了 C 風(fēng)格的 for 循環(huán),該循環(huán)打印從 1 到 7 的數(shù)字列表。
#!/bin/bash
n=7
for (( n=1 ; n<=$n ; n++ ));
穿
回顯$n
完畢
Bash C 風(fēng)格的 For 循環(huán)和條件語(yǔ)句
您可以在 C 風(fēng)格的 for 循環(huán)中包含條件表達(dá)式。在下面的示例中,我們包含一個(gè) if-else 語(yǔ)句,用于檢查 1 到 7 之間的偶數(shù)和奇數(shù)并將其取出。
#!/bin/bash
對(duì)于 (( n=1; n<=7; n++ ))
穿
# 檢查數(shù)字是否為偶數(shù)
如果 (( $n%2==0 ))
然后
echo "$n 是偶數(shù)"
別的
echo "$n 是奇數(shù)"
偷
完畢
將“Continue”語(yǔ)句與 Bash For 循環(huán)結(jié)合使用
“Continue”語(yǔ)句是控制腳本執(zhí)行方式的內(nèi)置命令。除了 bash 腳本之外,它還用于 Python 和 Java 等編程語(yǔ)言。
Continuation 語(yǔ)句在滿(mǎn)足某個(gè)條件時(shí)停止循環(huán)中的當(dāng)前迭代,然后再次開(kāi)始迭代。
考慮下面所示的 for 循環(huán)。
#!/bin/bash
對(duì)于 {1..10} 中的 n
穿
如果 [[ $n -eq
然后
echo "已達(dá)到目標(biāo)$n"
繼續(xù)
偷
回顯$n
完畢
這就是代碼的作用:
的
第 2 行:標(biāo)記 for 循環(huán)的開(kāi)始并返回從 1 到 10 的 n 個(gè)變量。
第 4 行:檢查 n 的值,如果變量等于 6,則腳本向 stdout 返回一條消息,并在 2 行中的下一次迭代時(shí)重新啟動(dòng)循環(huán)。
第 9 行:僅當(dāng)?shù)?4 行的條件為 false 時(shí)才在屏幕上打印值。
的
以下是運(yùn)行腳本后的預(yù)期輸出。
將“break”語(yǔ)句與 Bash For 循環(huán)結(jié)合使用
顧名思義,“break”語(yǔ)句在滿(mǎn)足條件時(shí)停止或終止。
考慮下面的 For 循環(huán)。
#!/bin/bash
對(duì)于 {1..10} 中的 n
穿
如果 [[ $n -eq
然后
echo "已達(dá)到目標(biāo)$n"
休息
偷
回顯$n
完畢
回聲“全部完成”
這就是代碼的作用:
的
第 2 行:標(biāo)記 for 循環(huán)的開(kāi)始并返回從 1 到 10 的 n 個(gè)變量。
第 4 行:獲取 n 的值,如果該變量等于 6,則腳本向 stdout 重復(fù)一條消息并停止重復(fù)。
第 9 行:僅當(dāng)?shù)?4 行中的條件為 false 時(shí)才在屏幕上打印數(shù)字。
的
從輸出中,您可以看到一旦變量達(dá)到循環(huán)狀態(tài),循環(huán)就會(huì)停止。
這是關(guān)于 Bash For 循環(huán)的教程。希望您覺(jué)得這篇文章很有見(jiàn)地。請(qǐng)隨意評(píng)估您的評(píng)論。