在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循环读取文件。我们在文件末尾提供文件名作为输入。首先,我们创建一个脚本并授予其执行权限。然后只有它可以读取文件并显示结果。

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

运行上面的代码给我们以下结果-

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

用于和在

在下一个方法中,我们使用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 $( < a_file.txt )

运行上面的代码将为我们提供以下结果:

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

用空行读取文件

如果文件中的某些行为空白,则可以使用以下代码在输出中避免它们。这使用将IFS(内部字段分隔符)设置为空字符串,以便将空行视为字段分隔符,并避免在输出中使用。假设第三行和第四行之间有空白行,则这些空白留置权将不会被打印。

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

运行上面的代码给我们以下结果-

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday