了解如何在 Shell 腳本中使用 Bash For 循環(huán)

言鼎科技 2023-07-12 484

在編程語(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)論。

言鼎科技

The End