我通常使用 read 命令将输入文件逐行读取到 shell 脚本中。如果没有在输入文件 blah.txt 的最后一行的末尾插入新行,则下面的示例代码会产生错误的结果。
#!/bin/sh
while read line
do
echo $line
done <blah.txt
因此,如果输入文件读取类似 -
One
Two
Three
Four
而且我在四点之后没有按回车键,脚本无法读取最后一行,并打印
One
Two
Three
现在,如果我在四之后留下一个额外的空行,例如,
One
Two
Three
Four
//blank line
输出打印所有行,包括四行。cat
但是,当我使用命令读取一行时,情况并非如此;包括最后一行在内的所有行都会打印出来,而我不必在最后添加一个额外的空白行。
任何人都知道为什么会发生这种情况?我创建的脚本主要由其他人运行,因此他们没有必要在每个输入文件的末尾添加一个额外的空白行。
多年来,我一直试图弄清楚这一点;如果您有任何解决方案,我将不胜感激(当然,cat
命令是一个,但我想知道 read 无法正常工作的原因)。