In bash, this works:
echo -n $'a\nb\nc\n' | while read x; do echo = $x =; done
The while loops through three times
= a =
= b =
= c =
But imagine a text file that doesn't have the conventional trailing newline. I think that read
should still work for all three lines, but it doesn't. I just get:
echo -n $'a\nb\nc' | while read x; do echo = $x =; done
= a =
= b =
The help read
in bash doesn't really clarify.
Note: I don't need this resolved, and I can see some ways to fix it myself. I am curious, and I am tempted to file a bug report - I generally try myself to respect files that mightn't have the trailing new line. I came across this when using the -d option to read. read -d " "
will split on spaces instead of newlines, but it will miss out on the last entry unless it has a trailing space.
(Ubuntu. GNU bash, version 4.1.5(1)-release)