shell脚本无法读取最后一行
不要到处宣扬自己的内心,这世上不止你一个人有故事。
while read line无法读取最后一行
1 |
|
原因
因为我的目标文件是在windows下创建然后传到服务器上的,这样在利用while read line
读取文件时,如果文件最后一行之后没有换行符\n,则read读取最后一行时遇到文件结束符EOF时循环即终止。上面代码中,虽然此时$line内存有最后一行的内容,但程序已经没有机会再处理此行内容,因此导致了最后一行无法读取。
解决
方案一
修改while循环,增加 [[ -n ${line} ]]
,这样当文件没有到最后一行时不会测试-n $line
,当遇到文件结束(最后一行)时,仍然可以通过测试$line是否有内容来进行继续处理。
1 | #!bin/bash |
方案二
通过分析原因可知,本质原因是因为文件格式不是unix导致的,可以直接通过设置文件格式来处理,该方式则脚本代码不需改动。
1 |
|