使用 While 迴圈在 Bash 指令碼中讀取檔案的不同方法


在 Bash 環境中,讀取檔案是 shell 指令碼的一個重要方面。在 Bash 中,可以使用不同的技術來讀取檔案,其中一種最流行且用途廣泛的方法是使用 while 迴圈。Bash 中的 while 迴圈是一個強大的結構,它允許我們逐行遍歷檔案,從而更容易地操作和處理資料。在本文中,我們將討論在 Bash 指令碼中使用 while 迴圈讀取檔案的各種方法。

在深入探討 Bash 中讀取檔案的不同技術之前,讓我們先了解 while 迴圈的語法和功能。

理解 Bash 中的 While 迴圈

Bash 中的 while 迴圈遵循特定的語法,如下所示:

while [condition]
do
   # code to execute
done

迴圈會重複執行,直到條件返回 false。迴圈內的程式碼會一直執行,直到條件返回 false。

在 Bash 中,我們可以使用 while 迴圈透過不同的方法讀取檔案,包括使用 read 命令、I/O 重定向和 cat 命令。

使用 read 命令讀取檔案

read 命令是 Bash 內建命令,用於從檔案或標準輸入 (STDIN) 讀取輸入。我們可以使用 read 命令透過使用 while 迴圈逐行遍歷檔案內容來讀取 Bash 中的檔案。

以下是如何在 Bash 中使用 read 命令讀取檔案的示例:

#!/bin/bash

filename="sample.txt"

while read line
do
   echo $line
done < "$filename"

在上面的示例中,我們首先將檔名稱定義為 filename。然後,我們使用 while 迴圈逐行遍歷檔案內容。read 命令讀取檔案的每一行並將其分配給 line 變數。然後,我們使用 echo 命令將該行列印到標準輸出。最後,我們使用 I/O 重定向將檔案內容重定向到 read 命令。

使用 I/O 重定向讀取檔案

在 Bash 中讀取檔案的另一種方法是使用 I/O 重定向。I/O 重定向是一種用於將檔案中的輸入或輸出重定向到命令或反之的技術。我們可以使用 while 迴圈和 I/O 重定向來讀取 Bash 中的檔案。

以下是如何在 Bash 中使用 I/O 重定向讀取檔案的示例:

#!/bin/bash

filename="sample.txt"

while IFS= read -r line
do
   echo $line
done < "$filename"

在上面的示例中,我們定義檔名為 filename。然後,我們使用 while 迴圈和 I/O 重定向逐行讀取檔案內容。IFS= read -r line 命令讀取檔案的每一行並將其分配給 line 變數。IFS 是一個 Bash 變數,用於設定輸入欄位分隔符,-r 選項可以防止反斜槓被解釋為跳脫字元。然後,我們使用 echo 命令將該行列印到標準輸出。

使用 cat 命令讀取檔案

cat 命令是一個 Unix 命令,用於連線和顯示檔案。我們可以使用 cat 命令和 while 迴圈來讀取 Bash 中的檔案。

以下是如何在 Bash 中使用 cat 命令讀取檔案的示例:

#!/bin/bash

filename="sample.txt"

cat "$filename" | while read line
do
   echo $line
done

在上面的示例中,我們定義檔名為 filename。然後,我們使用 cat 命令顯示檔案內容,然後將其傳遞給 while 迴圈。while 迴圈逐行讀取 cat 命令的輸出並使用 echo 命令列印它。

使用 IFS 變數讀取檔案

在 Bash 中讀取檔案的另一種方法是使用 IFS(內部欄位分隔符)變數。IFS 變數用於指定分隔文字行中欄位的分隔符。預設情況下,IFS 變數設定為空格、製表符和換行符。

以下是如何在 Bash 中使用 IFS 變數讀取檔案的示例:

#!/bin/bash
filename="sample.txt"
while IFS= read -r line
do
echo $line
done < "$filename"

在上面的示例中,我們像之前一樣定義檔名。while 迴圈逐行讀取檔案,我們將 IFS 變數設定為 null 以讀取整行而不是僅讀取第一個單詞。-r 選項用於防止反斜槓被解釋為跳脫字元。最後,“<” 字元用於將輸入重定向自檔案。

使用 read 命令讀取檔案

在 Bash 中讀取檔案的另一種方法是使用 read 命令。read 命令用於從標準輸入或檔案描述符讀取一行輸入。我們可以使用 read 命令和 while 迴圈來讀取 Bash 中的檔案。

以下是如何在 Bash 中使用 read 命令讀取檔案的示例:

#!/bin/bash
filename="sample.txt"
while read line
do
echo $line
done < "$filename"

在上面的示例中,我們像之前一樣定義檔名。while 迴圈使用 read 命令逐行讀取檔案,“<” 字元用於將輸入重定向自檔案。

使用 awk 命令讀取檔案

awk 命令是 Unix 類作業系統中用於文字處理和資料提取的強大工具。我們可以使用 awk 命令和 while 迴圈來讀取 Bash 中的檔案。

以下是如何在 Bash 中使用 awk 命令讀取檔案的示例:

#!/bin/bash
filename="sample.txt"
awk '{print}' "$filename" | while read line
do
echo $line
done

在上面的示例中,我們像之前一樣定義檔名。awk 命令讀取檔案並將每一行列印到標準輸出。然後,awk 命令的輸出被傳遞給 while 迴圈,它逐行讀取輸出並使用 echo 命令列印它。

結論

在本文中,我們討論了使用 while 迴圈在 Bash 中讀取檔案的不同方法。我們涵蓋了 cat 命令、IFS 變數、read 命令和 awk 命令。每種方法都有其優點和缺點,方法的選擇取決於手頭任務的具體要求。

在 Bash 中讀取檔案是一項基本任務,瞭解如何高效有效地執行它至關重要。使用本文中討論的技術,您可以輕鬆地在 Bash 中讀取和處理檔案。

更新於:2023年6月26日

8K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.