read
ファイルの最後に「改行」文字がない場合、ファイルの最後の行を実際に読み取ることはないことにしばらく気づきました。これは、ファイルに「改行」文字がない限り、0行が含まれているように見えることを考えると理解できます(これは認めるのが非常に難しいです!)。たとえば、次を参照してください。
$ echo 'foo' > bar ; wc -l bar
1 bar
だが...
$ echo -n 'bar' > foo ; wc -l foo
0 foo
read
問題は、自分で作成または変更されていないファイルを処理するために使用するときに、実際に「改行」文字で終わるかどうかわからないような状況をどのように処理できるかということです。