以下是原文翻译成繁體中文的內容:

Unix / Linux - Shell Loops

# Unix / Linux - Shell 循環:初學者指南

你好,有志成為程序員的各位!今天,我們將要深入探索 Unix 和 Linux 中的 shell 循環世界。別擔心如果你之前從未寫過一行代碼——我會一步一步地引導你,就像我這些年來對無數學生所做的一樣。讓我們開始吧!

## 什麼是 Shell 循環?

想像你在一個派對上,需要問候每一位客人。如果你可以只說,“對每位客人重複 '你好'”,豈不是很好?這正是編程中循環的作用——它們允許我們重複執行一組指令多次。

在 shell 腳本中,循環對於自動化重複任務非常有用。它們可以節省你的時間,並減少如果你手動重複命令可能出現的錯誤。

## Shell 循環的類型

在 Unix/Linux shell 腳本中,我們主要使用三種類型的循環:

| 循環類型 | 說明 | 使用案例 |
|-----------|-------------|----------|
| for 循環 | 遍歷一組項目 | 當你確切知道迭代次數時使用 |
| while 循環 | 當條件為真時持續執行 | 當你不知道需要多少次迭代時使用 |
| until 循環 | 當條件變為真時停止執行 | 與 while 相似,但邏輯相反 |

讓我們詳細探討每一種。

## 'for' 循環

'for' 循環就像一個勤勉的郵差,將消息送到街道上的每個房子。它遍歷一組項目,並對每一個執行一個動作。

這裡是基本語法:

```bash
for 變量 in 清單
do
    命令
done

讓我們看一個簡單的例子:

#!/bin/bash
for 水果 in apple banana orange
do
    echo "我喜歡 $水果"
done

如果你運行這個腳本,你會看到:

我喜歡 apple
我喜歡 banana
我喜歡 orange

在這個例子中,我們的“郵差”(循環)將“我喜歡”這個消息送到“街道”(我們的水果清單)上的每個“房子”(水果)。

'while' 循環

'while' 循環就像一個堅持不懈的推銷員,只要你沒有購買他們的產品,他們就會持續敲你的門。只要條件為真,它就會持續執行一組命令。

這裡是基本語法:

while [ 條件 ]
do
    命令
done

讓我們看一個例子:

#!/bin/bash
計數=1
while [ $計數 -le 5 ]
do
    echo "計數是:$計數"
    計數=$((計數 + 1))
done

這個腳本將輸出:

計數是:1
計數是:2
計數是:3
計數是:4
計數是:5

在這個例子中,我們的“推銷員”(循環)會持續“敲門”(打印計數)直到計數達到 5。

'until' 循環

'until' 循環就像等待公共汽車。你會持續等待直到公共汽車到達。它會持續執行命令直到條件變為真。

這裡是基本語法:

until [ 條件 ]
do
    命令
done

讓我們看一個例子:

#!/bin/bash
計數=1
until [ $計數 -gt 5 ]
do
    echo "計數是:$計數"
    計數=$((計數 + 1))
done

這個腳本會產生與我們的 while 循環例子相同的輸出。區別在於邏輯:我們是持續直到計數大於 5,而不是計數小於或等於 5。

嵌套循環

就像你可以有一個房間裡面的房間(想想走入式衣櫃),你也可以在循環中嵌套循環。這被稱為嵌套循環。

以下是一個嵌套 for 循環的例子:

#!/bin/bash
for i in 1 2 3
do
    echo "外層循環:$i"
    for j in a b c
    do
        echo "  內層循環:$j"
    done
done

這個腳本將輸出:

外層循環:1
  內層循環:a
  內層循環:b
  內層循環:c
外層循環:2
  內層循環:a
  內層循環:b
  內層循環:c
外層循環:3
  內層循環:a
  內層循環:b
  內層循環:c

這就像一個多層公寓樓。外層循環遍歷每個樓層,對於每個樓層,內層循環遍歷每個公寓。

嵌套 while 循環

我們也可以嵌套 while 循環。以下是一個例子:

#!/bin/bash
i=1
while [ $i -le 3 ]
do
    echo "外層循環:$i"
    j=1
    while [ $j -le 3 ]
    do
        echo "  內層循環:$j"
        j=$((j + 1))
    done
    i=$((i + 1))
done

這個腳本將產生與我們嵌套 for 循環例子類似的輸出。

結論

恭喜你!你剛剛踏入了 shell 循環的世界。記住,循環就像是能夠為你重複任務的有用的機器人。'for' 循環在你知道要重複多少次時非常棒。'while' 和 'until' 循環在你不確定並需要持續直到滿足某個條件時非常適合。

隨著你編程旅程的繼續,你會發現循環是你編程工具包中無價的工具。它們將幫助你自動化重複任務,處理大量數據,並創建有效率和優雅的腳本。

繼續練習,很快你就能像專業人士一樣使用循環。記住,每個編程大師都是從你現在的位置開始的。快樂編程!

Credits: Image by storyset