【发布时间】:2013-06-24 04:38:37
【问题描述】:
我通常使用 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 无法正常工作的原因)。
【问题讨论】:
标签: bash parsing shell file-io