15 January 2015

文本文件raw.txt里面包含4行代码,如下:

.center{
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}

cat raw.txt | while read line; echo $line; done逐行处理,发现最后一行没有进入循环体内:

最后一行未被处理

stackoverflow上搜索,找到的原因是“最后一行因为缺少换行符”导致read line出错,while条件不成立,所以没有进入循环体内。解决方法是 while read line || [ -n "$line" ] 如下:

最后一行被正确处理

当然,给被处理文件最后一行添加换行符也是可以解决问题的,最简单的方法就是用文本编辑工具,如vim重新打开并保存就行。

参考

  1. Read last line of file in bash script when reading file line by line

  2. Shell script read missing last line 这里有“缺少换行符为什么read报错”的解释。



blog comments powered by Disqus