bash:遍历txt文件行可以';我不读最后一行

bash:遍历txt文件行可以';我不读最后一行,bash,bash4,Bash,Bash4,读取p时;执行 echo$p done

读取p时
;执行

echo$p

done

此代码可以读取file.txt中除最后一行之外的所有行。
谢谢

cat file.txt,看看最后一行末尾是否有新行。
如果没有,则在读取p时
;do echo$p done
不会回显最后一行在文本文件的最后一行末尾添加新行

如果您对文件中的最后一行有疑问,可以尝试:

while read p; do
echo $p
done < <(grep '' file.txt)
读取p时
;做
回声$p

正如其他答案所指出的,最后一行不包含换行符。但是read命令实际上设置了
p
变量,然后返回文件结束错误,而不是返回成功。因此,此错误会阻止循环执行。您仍然可以使用包含文件最后一行的
p
变量

while read -r p || [[ -n "$p" ]]
do
echo $p
done < file.txt
读取时-r p | |[[-n“$p”]]
做
回声$p
完成
这就需要测试两个条件,或者,只有在第一个条件失败时,第二个条件才会被执行。因此,当最后一行在
read
中导致文件结束错误时,我们将检查
p
是否已设置。如果是,我们将使用它