以下是原文翻译成繁體中文的內容:
# 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