Bash 脚本——如何逐行读取文件
在本文中,我们将了解如何在 Bash 脚本中逐行读取文件。
在某些情况下,您可能希望使用 BASH 脚本逐行读取文件的内容。在本节中,我们将研究不同的方法来做到这一点。我们将使用 BASH 命令和工具来实现该结果。我们使用 read 和 cat 命令、for 循环、while 循环等从文件中读取,并使用 BASH 中的几行脚本逐行遍历文件。
方法一:使用读命令和while循环
我们可以使用 read 命令逐行读取文件的内容。我们在 read 命令中使用 -r 参数来避免任何反斜杠转义字符。
#!usr/bin/env bash
file="temp.txt"
while read -r line; do
echo -e "$line\n"
done <$file
在下面的示例中,我们可以看到我们对文件逐行进行迭代,并将单行的内容存储在变量“ line ”中。文件名存储在变量文件中,可以根据需要自定义。您可以使用以下命令运行脚本(这里filereader.sh可以是您为脚本指定的任何名称)。
bash filereader.sh
我们使用带有-r参数的 read 命令来读取内容而不转义反斜杠字符。我们读取每一行的内容并将其存储在变量 line 和while 循环中,我们使用格式化的-e参数回显以使用特殊字符(如 \n )并打印 line 变量的内容。
该文件也可以通过将其解析为位置参数来输入。
bash filereader.sh filename
文件名可以是您想要读取其内容的任何文件。您需要更改声明文件变量的脚本。
file=$1
这会将脚本名称后的第一个参数作为要在脚本中使用的文件名。因此,我们可以使脚本根据给定的输入动态更改文件。
方法二:使用 cat 和 for 循环
通过这种方法,我们可以使用 cat 命令和 for 循环来读取文件的内容。我们对循环使用与 while 循环相同的方法,但我们使用 cat 命令将文件的内容存储在一个变量中。 for 循环逐行遍历cat 命令输出中的行,直到到达 EOF 或文件末尾。
在这里,我们也可以将位置参数合并为文件名。我们需要在脚本中用 $1 替换文件名。
file=$(cat $1)
这将从命令行参数获取文件并将其解析为 cat 命令以进一步处理脚本。
#!usr/bin/env bash
file=$(cat temp.txt)
for line in $file
do
echo -e "$line\n"
done
因此,从上面的示例中,我们能够在 BASH 脚本中逐行读取文件的内容。