缺少文件中的最后一行

C 标准说文件应该以新行结束,所以如果 EOF 出现在一行的末尾,那么某些命令可能不会错过该行。举个例子:

$ echo 'one
two
three\c' > file.txt

$ cat file.txt
one
two
three

$ while read line ; do echo "line $line" ; done < file.txt
one
two

为了确保这在上面的示例中正常工作,请添加一个测试,以便在最后一行不为空时继续循环。

$ while read line || [ -n "$line" ] ; do echo "line $line" ; done < file.txt
one
two
three