当我捕捉到这个文件时,我得到6行(这是一个差异文件)
bash-3.00$ cat /tmp/voo
18633a18634
> sashabSTP
18634a18636
> sashatSTP
21545a21548
> yheebash-3.00$
然而,当我逐行阅读时,我只得到5行。
bash-3.00$ while read line ; do echo $line ; done < /tmp/voo
18633a18634
> sashaSTP
18634a18636
> sashatSTP
21545a21548
或者
bash-3.00$ cat /tmp/voo | while read line ; do echo $line ; done
18633a18634
> sashabSTP
18634a18636
> sashatSTP
21545a21548
bash-3.00$
我错过了来自while循环的最后一行'yhee'。
答案 0 :(得分:5)
注意:
21545a21548
> yheebash-3.00$
^---- no line break
您的文件不会以换行符结束。
答案 1 :(得分:2)
如果您想知道为什么?,this might satisfy your curiosity。
如果您使用的文件最后可能会或可能不会以新行结尾,您可以这样做:
while IFS= read -r line || [ -n "$line" ]; do
echo "$line"
done <file
或者这个:
while IFS= read -r line; do
echo "$line"
done < <(grep "" file)
了解更多: