在 Bash 中迴圈遍歷檔案內容


通常需要使用 bash 指令碼讀取檔案中的每一行。有多種方法可以讀取檔案中的行。在下面的示例中,我們首先描述瞭如何建立一個示例檔案,然後執行一個讀取該示例檔案的指令碼。

建立要讀取的檔案

# Open vi Editor
vi a_file.txt
# Input the below lines
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
# cat the file
cat a_file.txt

執行上述程式碼將得到以下結果:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

使用 Do-While 迴圈

在這種方法中,我們使用 do-while 迴圈來讀取檔案。我們在檔案的末尾輸入檔名。首先,我們建立一個指令碼並賦予它執行許可權。只有這樣它才能讀取檔案並顯示結果。

#!/bin/bash
while read LINE
do echo "$LINE"
done < a_file.txt

執行上述程式碼將得到以下結果:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

使用 for 和 in

在下一種方法中,我們使用 for 迴圈以及 in 語句。在這裡,我們將 cat 命令的結果(即每一行)儲存在一個變數中,該變數是 for 迴圈的一部分,並回顯該變數。

#!/bin/bash
file=a_file.txt
for i in `cat $file`
do
echo "$i"
done

執行上述程式碼將得到以下結果:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

僅使用 echo

我們也可以僅使用 echo 來獲取檔案的內容。但是結果將作為一行行的陣列輸出,顯示所有行的組合。

echo $( < a_file.txt )

執行上述程式碼將得到以下結果:

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

讀取包含空行的檔案

如果一個檔案包含一些空行,那麼我們可以使用以下程式碼避免在輸出中顯示它們。這使用 IFS(內部欄位分隔符)設定為空字串,以便空行被視為欄位分隔符並在輸出中避免。假設在第 3 行和第 4 行之間有一些空行,這些空行將不會被列印。

#!/bin/bash
while IFS = read -r LINE
do echo "$LINE"
done < a_file.txt

執行上述程式碼將得到以下結果:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

更新於:2020年1月3日

6K+ 次瀏覽

啟動你的 職業生涯

完成課程獲得認證

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