在 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
广告