while read的关于读取最后一行的问题
jamex 2012-06-25 07:06:54 以下脚本,
#!/bin/bash
USER="cca"
servers_filename="/eaa/cca/st_scripts/src/servers_cc.txt"
output_file="/eaa/cca/st_scripts/deletelogs/deletelog_cc.log"
date > $output_file
echo "deleting logs for servers in $servers_filename ... "
while read SERVER
do
echo "$SERVER : deleting logs ..."
done < $servers_filename
文件 /eaa/cca/st_scripts/src/servers_cc.txt 内容如下:
server001
server002
server003
(注:server003后面再无任何字符,包括回车)
发现个问题,是关于文本文件servers_cc.txt尾部文件结束符的问题。如果这个文件是Windows的notepad编辑的然后上传到Linux,会比直接在Linux的VI编辑,文件字节数会少1,我估计是文件的尾部的结束符。
问题是:上面的脚本执行起来,会漏读servers_cc.txt的最后一行,如果这个文件是windows下编辑的。
我知道在文本的最后加一个回车能够解决这个问题。
但是,请问,为什么read读不了最后一行? 如何修改脚本来解决这个问题?