コンピュータや音楽の事書いてます

while read の謎

このCGIに単行の改行無しデータを送ると、件数が0件になる

#!/bin/bash

echo -e "Content-type: text/plain;charset=UTF-8\n\n"

i=0
while read line
    do
        echo "$line" 
        (( i++ ))
    done

echo "$i 件 成功"

これは良い。

$ printf "aaaaa\nbbbb\n" | ./readtest
Content-type: text/plain;charset=UTF-8


aaaaa
bbbb
2 件 成功

これも良い。

$ printf "aaaaa\n" | ./readtest
Content-type: text/plain;charset=UTF-8


aaaaa
1 件 成功

これは????

$ printf "aaaaa" | ./readtest
Content-type: text/plain;charset=UTF-8


0 件 成功
$ printf "aaaaa\nbbbb" | ./readtest
Content-type: text/plain;charset=UTF-8


aaaaa
1 件 成功

最終行に改行が無いとread文は読み込まない仕様だそうです。