Bashでは、tail -f
をread
ループにパイプすると、無期限にブロックされます。
while read LINE0
do
echo "${LINE0}";
done < <( tail -n 3 -f /tmp/file0.txt | grep '.*' )
# hangs
-f
または| grep '.*'
を削除すると、ループが繰り返されます。
以下はnotがハングします。
tail -n 3 -f /tmp/file0.txt | grep '.*'
この動作の原因は何ですか?
とにかくBashにファイルをフォローしてパイプ式を読み取る方法はありますか?
tail -n 3 -f /tmp/file0.txt | grep --line-buffered '.*' | while read LINE0
do
echo "${LINE0}";
done