在 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+ 次浏览

启动你的 职业生涯

完成课程获得认证

开始学习
广告