在 Bash 中實現 for 迴圈
-
Bash
for
迴圈 -
Bash C 風格
for
迴圈語法 -
Bash
Foreach
/For-in
樣式語法 -
在 Bash
for
迴圈中定義範圍和跳轉大小 -
在 Bash 提示符中製作
for
迴圈並解決分號;
的問題
本教程將討論編寫 Bash for
迴圈的可用 Bash 指令碼公式。
首先,我們將學習它的基本語法和概念。稍後,我們將在 Bash 指令碼中學習它的不同型別,例如 C 風格的 for
迴圈表示法和 foreach
或 for-in
風格。
最後,我們將討論分號 ;
的問題。在 bash 提示符中進行 for
迴圈時。
Bash for
迴圈
程式設計或指令碼語言中的迴圈是一種迭代控制結構,用於重複執行一個語句或一組語句,直到不滿足某個條件。
for
迴圈是一種迴圈結構,特別適用於某個語句或一組命令需要執行指定次數的情況。我們還可以在 bash 提示符和 Bash 指令碼中使用 for
迴圈。
Bash 指令碼提供了兩種用於編寫 for
迴圈的語法。第一個被稱為 C 風格或三表示式迴圈,它與 for
迴圈的 C 語言表述幾乎相同。
第二種表述是著名的 foreach
或 for-in
樣式構造,也已被許多流行的程式語言(如 PHP、Python、C#、C++11、Ruby 等)採用。
Bash C 風格 for
迴圈語法
這種風格使用 C 語言等三個表示式來指定迴圈迭代的次數。
for (( initialization; condition; increment/decrement ))
do
Shell command[s]
done
示例:假設我們要編寫一個指令碼,可以幫助我們列印一個包含任何使用者提供的數字的表格。我們可以使用以下程式碼來做到這一點。
#!/bin/bash
echo "Enter a Number: "
read number
for ((j=1;j<=10;j++))
do
echo "$number X $j = $((number*j))"
done
上面的程式碼從使用者那裡獲取一個數字並列印它的表,最多為 10。假設使用者輸入 5
作為數字,程式的輸出應為:
Enter a Number:
5
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
5 X 10 = 50
Bash Foreach
/For-in
樣式語法
這種型別的 for
迴圈需要一個值/元素列表,併為列表中的每個元素執行一次迭代。該列表可以通過將每個專案分隔在一個空格中來提供,或者你可以指定一個範圍。
for Counter in 1 2 3 4 5 .. N
do
1st statement
2nd statement
nth statement
done
示例:列印 Hello World
五次。
#!/bin/bash
for c in 1 2 4 5 6
do
echo "$c Hello World"
done
輸出:
1 Hello World
2 Hello World
4 Hello World
5 Hello World
6 Hello World
請注意缺少的 3
。由於迴圈僅針對列表中給定的專案數進行迭代,因此錯過了此數字。因此,變數 c
首先被賦予一個值 1
,然後執行單次迭代。
之後,將 2
分配給 c
,並執行第二次迭代。稍後,列表中的下一個值(即 4
)被分配給 c
,並且該過程繼續進行,直到整個列表完成。
for Item in File_0 File_1 File_N
do
Some Operations on Item
done
或者
for Item in $(Command)
do
Some Operations on Item
done
當命令與 for
迴圈一起使用時,Item
變數將被一個一個地分配給每個輸出標記。例如,以下指令碼將使用 for
迴圈列印當前目錄中以 f
開頭的所有檔案或資料夾。
#!/bin/bash
for Item in $(ls f*)
do
echo "$Item"
done
在 Bash for
迴圈中定義範圍和跳轉大小
如果你知道某些開始值和結束值之間沒有缺少數字。即使兩個連續值之間的差異(也稱為跳轉大小)大於 1,你也可以使用具有以下語法的 for
迴圈。
for i in {Start_Value..End_Value..Jump_Size}
do
Statement(s)
done
示例:列印 10 到 20 之間的所有偶數將需要 Start_Value=10
、End_Value=20
和 Jump_Size=2
。
#!/bin/bash
for evenNumber in {10..20..2}
do
echo "$evenNumber"
done
輸出:
10
12
14
16
18
20
在 Bash 提示符中製作 for
迴圈並解決分號 ;
的問題
這 ;
用於在單行上分隔或結束命令。還有其他分隔符,例如&
。
然而,當 ;
用於終止命令,只有在上一條命令執行完畢後才執行下一條命令,也稱為同步執行。
假設你想在 bash 提示符的單行上編寫一個 for
迴圈,而不使用 newline
作為語句終止符,那麼你可以使用 Bash 參考手冊 中的以下語法。
for Item [ [in [List of Items] ] ; ] do commands; done
示例:下面的程式碼等價於我們之前列印偶數的指令碼。
#!/bin/bash
for even in {10..20..2} ; do echo "$even";done
do
關鍵字之後。因此,在 do
後面加上 ;
會產生一個語法錯誤。三表示式或 C 型別 for
迴圈的語法如下。
for (( Initilization ; Condition ; Increment/Decrement )) ; do commands ; done
例子:
#!/bin/bash
for ((i=10;i<20;i=i+2));do echo "$i"; done
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn