shell: while read line只读取一行就不向下读了:原因是文件每一行不是以换行符结尾的

在利用while read line读取文件时:

如果文件最后一行之后没有换行符\n,则read读取最后一行时遇到文件结束符EOF,循环即终止。

虽然,此时$line内存有最后一行,但程序已经没有机会再处理此行内容。因此导致了这个问题发生。解决方案如下:

1 cat $2  | while read line || [[ -n ${line} ]]
do
  echo $line
done
posted @ 2022-08-11 11:33  YlnChen  阅读(764)  评论(0编辑  收藏  举报