Bash 中的 For 迴圈

Fumbani Banda 2023年1月30日 Bash Bash Loop
  1. Bash 中的 for 迴圈
  2. 在 Bash 中使用 for 迴圈的示例
  3. Bash 的 for 迴圈中帶有 break 的條件退出
  4. for 迴圈替換命令
Bash 中的 For 迴圈

本教程解釋瞭如何在 Bash 指令碼中使用範圍表示法和三表示式表示法中的 for 迴圈,就像在 C 程式語言中一樣。

Bash 中的 for 迴圈

for 迴圈是用於重複執行命令的 Bash 語句。Bash 中的 for 迴圈使用兩個主要符號。這兩個符號如下所示。

第一種表示法使用具有定義範圍的 for 迴圈。在下面的語法中,範圍的端點是 n。這意味著 for 迴圈將在它停止之前執行其中的命令 n 次。

for variable in 1 2 3 ... n do  command1  command2 done 

第二種表示法使用帶有三表示式的 for 迴圈,就像在 C 程式語言中一樣。exp1 是初始化,exp2 是條件,exp3 是增量。

for ((exp1; exp2; exp3)) do  command1  command2 done 

在 Bash 中使用 for 迴圈的示例

下面的指令碼演示了在 Bash 指令碼中使用 for 迴圈。

該指令碼第一次將變數 i 的值設定為 1,並列印 line number 1。然後它返回到 for 迴圈,將變數 i 設定為 2,並列印 line number 2

指令碼反覆執行此操作,更改 i 的值,直到到達最後一個數字 5。一旦列印 line number 5for 迴圈將自動退出。

#!/bin/bash for i in 1 2 3 4 5 do  printf "line number $i"  printf "\n" done 

執行上面的指令碼會將以下輸出列印到標準輸出。

line number 1 line number 2 line number 3 line number 4 line number 5 

下面的指令碼使用花括號來定義 for 迴圈迭代的範圍。花括號內的數字按順序遞增。

第一次,i 的值設定為 1。該指令碼然後在 for 迴圈內執行兩個 printf 命令。i 的值加 1,變為 2,然後執行 for 迴圈內的 printf 命令。

i 的值不斷增加,直到最終變為 5,一旦執行了兩個 printf 命令,for 迴圈會自動終止。

!/bin/bash for i in {1..5} do  printf "Hello World $i"  printf "\n" done 

以下是執行指令碼後列印出來的輸出。

Hello World 1 Hello World 2 Hello World 3 Hello World 4 Hello World 5 

下面,指令碼使用 C 程式語言中的三表示式表示法。在第一個表示式中,x 被初始化為 0。第二個表示式有條件測試,檢查 x 是否小於或等於 max 變數的值。

max 變數的值已設定為 5。最後一個表示式將 x 的值增加 1

第一次,x 的值為 0,並且條件返回真,因為 0 小於或等於 5。然後 for 迴圈將 number: 0 列印到終端,x 的值增加 1x 現在變成 1

1 是否小於或等於 5 也會被測試,它返回 true,並且 for 迴圈列印 number: 1。這個過程不斷重複,直到條件返回 false 並且 for 迴圈退出。

#!/bin/bash max=5 printf "Print Numbers from 0 to $max\n" for ((x=0;x<=max;x++)); do  printf "number: $x\n" done 

下面是執行指令碼後列印到終端的輸出。

Print Numbers from 0 to 5 number: 0 number: 1 number: 2 number: 3 number: 4 number: 5 

Bash 的 for 迴圈中帶有 break 的條件退出

下面的指令碼演示了使用 break 關鍵字退出 for 迴圈。如果 x 變數的值小於或等於 max 變數的值,for 迴圈被設定為迭代。然而,for 迴圈中有一個 test 命令。

test 命令檢查 x 變數的值是否等於 3;如果此測試返回 true,則指令碼遇到 break 關鍵字,並退出 for 迴圈。

#!/bin/bash max=5 printf "Print Numbers from 0 to $max\n" printf "Program will exit when we hit 3\n"  for ((x=0;x<=max;x++)); do  printf "number: $x\n"  if [ $x -eq 3 ]  then  break  fi done 

以下是指令碼執行時顯示到標準終端的輸出。當 x 的值等於 3 時存在 for 迴圈,因為 for 迴圈內的 test 命令在 x 變數的值設定為 3 時計算算術表示式,它返回 true。然後指令碼在 if 語句中遇到 break 關鍵字並退出。

Print Numbers from 0 to 5 Program will exit when we hit 3 number: 0 number: 1 number: 2 number: 3 

for 迴圈替換命令

下面的指令碼顯示了使用帶有命令替換的 for 迴圈。命令替換是 Bash 的一項功能,它允許我們執行 Linux 命令並將命令的輸出儲存在 Bash 變數中。使用此功能執行命令後,該命令的標準輸出將替換該命令。

在指令碼中,cat 命令使用命令替換來執行。cat file1.txt 的輸出替換了命令,for 迴圈遍歷命令的輸出並使用 printf 命令將其列印到標準輸出。

#!/bin/bash printf "Program prints the lines of a file\n\n"  for line in $(cat file1.txt) do  printf "$line"  printf "\n" done 

該指令碼在執行時會產生以下輸出。檔案 file1.txt 包含列印到標準終端的三種語言的列表。

Program prints the lines of a file  French English Spanish 
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Fumbani Banda
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

相關文章 - Bash Loop