Bash Continue 如何恢復迴圈


Bash 是一種流行的命令列介面 shell,廣泛用於 Linux 和 Unix 作業系統。Bash 最有用的功能之一是其執行迴圈的能力,它允許您自動化重複性任務。但是,有時您可能希望中斷迴圈並在稍後繼續執行。這就是 Bash continue 語句派上用場的地方。在本文中,我們將探討如何使用 Bash continue 語句恢復迴圈。

什麼是 Bash 迴圈?

在我們深入探討 Bash continue 語句的細節之前,瞭解什麼是 Bash 迴圈非常重要。迴圈是一種程式設計結構,允許您重複執行一段程式碼。在 Bash 中,有兩種型別的迴圈:for 迴圈和 while 迴圈。for 迴圈用於迭代一組值,而 while 迴圈用於重複執行一段程式碼,直到某個條件為真。

Bash Continue 語句

Bash continue 語句用於跳過迴圈的當前迭代並繼續執行下一迭代。如果您想跳過某些值或需要中斷迴圈並在稍後恢復,這將非常有用。continue 語句的語法如下:

continue

當 Bash 遇到 continue 語句時,它會立即停止執行迴圈的當前迭代並繼續執行下一迭代。

將 Bash Continue 與 for 迴圈一起使用

讓我們看看如何將 Bash continue 語句與 for 迴圈一起使用。在這個例子中,我們將迭代一組值並跳過任何可以被 2 整除的值:

示例

for i in {1..10}
do
   if (( i % 2 == 0 )); then
      continue
   fi
      echo $i
done

在這個例子中,我們使用 {1..10} 範圍運算子來迭代值 1 到 10。在迴圈內部,我們使用模運算子來檢查當前值是否可以被 2 整除。如果是,我們使用 continue 語句跳過當前迭代並繼續執行下一個。如果不是,我們使用 echo 命令列印當前值。

輸出

此指令碼的輸出將是:

1
3
5
7
9

如您所見,值 2、4、6、8 和 10 被跳過了,因為它們可以被 2 整除。

將 Bash Continue 與 while 迴圈一起使用

現在讓我們看看如何將 Bash continue 語句與 while 迴圈一起使用。在這個例子中,我們將使用 while 迴圈迭代值 1 到 10 並跳過任何大於 5 的值:

示例

i=1
while (( i <= 10 ))
do
    if (( i > 5 )); then
        (( i++ ))
        continue
    fi
    echo $i
    (( i++ ))
done

在這個例子中,我們將變數 i 初始化為 1 並使用 while 迴圈迭代值 1 到 10。在迴圈內部,我們檢查當前值是否大於 5。如果是,我們使用 continue 語句跳過當前迭代並繼續執行下一個。我們還使用 (( i++ )) 命令遞增 i 的值。如果當前值不大於 5,我們使用 echo 命令列印當前值。

輸出

此指令碼的輸出將是:

1
2
3
4
5

如您所見,值 6、7、

中斷後繼續迴圈

現在我們已經瞭解瞭如何使用 Bash continue 語句跳過迴圈的迭代,讓我們看看如何在中斷迴圈後恢復迴圈。有幾種方法可以做到這一點,具體取決於情況。

使用迴圈控制變數

中斷迴圈後恢復迴圈的一種方法是使用迴圈控制變數。迴圈控制變數是一個變數,用於跟蹤迴圈的當前狀態。

示例

i=1
while (( i <= 10 ))
do
    if (( i == 5 )); then
        break
    fi
    echo $i
    (( i++ ))
done

echo "Loop interrupted at i = $i"

while (( i <= 10 ))
do
    echo $i
    (( i++ ))
done

在這個例子中,我們將變數 i 初始化為 1 並使用 while 迴圈迭代值 1 到 10。在迴圈內部,我們檢查 i 的當前值是否等於 5。如果是,我們使用 break 語句中斷迴圈。然後,我們列印一條訊息,指示迴圈在 i = 5 時被中斷。

迴圈中斷後,我們使用另一個 while 迴圈恢復從中斷處開始的迭代。我們只需從 i 的當前值開始迴圈,並繼續迭代直到迴圈結束。

輸出

此指令碼的輸出將是:

1
2
3
4
Loop interrupted at i = 5
5
6
7
8
9
10

使用函式 中斷迴圈後恢復迴圈的另一種方法是使用函式。函式是可以重複呼叫的程式碼塊。H

示例

function myloop() {
    for i in {1..10}
    do
        if (( i == 5 )); then
            return $i
        fi
        echo $i
    done
}

i=$(myloop)
echo "Loop interrupted at i = $i"

for (( j=$i; j<=10; j++ ))
do
    echo $j
done

在這個例子中,我們定義了一個名為 myloop 的函式,其中包含一個 for 迴圈。在迴圈內部,我們檢查 i 的當前值是否等於 5。如果是,我們使用 return 語句中斷迴圈並返回 i 的值。

迴圈中斷後,我們呼叫 myloop 函式並將返回值儲存在變數 i 中。然後,我們列印一條訊息,指示迴圈在 i = 5 時被中斷。

最後,我們使用 for 迴圈恢復從中斷處開始的迭代。我們將變數 j 初始化為 i 的值,並繼續迭代直到迴圈結束。

輸出

此指令碼的輸出將是:

1
2
3
4
Loop interrupted at i = 5
5
6
7
8
9
10

結論

Bash continue 語句是一個強大的工具,允許您跳過迴圈的迭代並在中斷處恢復迴圈。透過將 continue 語句與迴圈控制變數或函式結合使用,您可以以多種不同的方式中斷和恢復迴圈。無論您是在自動化重複性任務還是處理大量資料,Bash continue 語句對於任何 Bash 程式設計師來說都是一個必不可少的工具。

更新於: 2023年3月31日

3K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.