在 Bash 中读取文件行
Fumbani Banda
2023年1月30日
2022年5月14日
本教程使用 read
命令在 bash 脚本中逐行读取文件。
这是我们将使用的文本文件的内容。
john\n ,
james\n ,
joe,
jack,
jill
在 Bash 中使用 read
命令逐行读取文件
names.txt
文件被重定向到 while
循环。read
命令处理文件中的每一行并将其分配给 p
变量,echo
命令显示它。一旦处理完所有行,while
循环就会停止。read
命令会忽略前导空格,这在某些情况下可能会产生误导。
printf "Names\n"
while read p;
do
echo "$p"
done <names.txt
输出:
Names
johnn ,
jamesn ,
joe,
jack,
jill
在 Bash 中使用 IFS
和 -r
选项逐行读取文件
默认情况下,read
命令会删除所有前导空格并将反斜杠解释为转义字符。我们添加 -r
选项以禁用反斜杠转义,并禁用修剪空格,以便清除内部字段分隔符(IFS)。
printf "Names\n"
while IFS= read -r line; do
printf '%s\n' "$line"
done < names.txt
输出:
Names
john\n ,
james\n ,
joe,
jack,
jill
Author: Fumbani Banda