web-dev-qa-db-ja.com

while-readとパイプがハングするbash tail -f

Bashでは、tail -freadループにパイプすると、無期限にブロックされます。

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にファイルをフォローしてパイプ式を読み取る方法はありますか?

3
Eric Larson
tail -n 3 -f /tmp/file0.txt | grep --line-buffered '.*' | while read LINE0 
do 
    echo "${LINE0}"; 
done 
11
Ipor Sircer