Bash tail -f com while-read e pipe trava

2

No Bash, o piping tail -f para um loop read é bloqueado indefinidamente.

while read LINE0 
do 
    echo "${LINE0}"; 
done < <( tail -n 3 -f /tmp/file0.txt | grep '.*' ) 
# hangs

Remova o -f ou | grep '.*' e, em seguida, o loop iterará.

O seguinte não não é interrompido.

tail -n 3 -f /tmp/file0.txt | grep '.*' 

O que causa esse comportamento?

Existe alguma maneira no Bash para seguir um arquivo e ler em uma expressão de pipe?

    
por Eric Larson 12.09.2016 / 23:06

1 resposta

8
tail -n 3 -f /tmp/file0.txt | grep --line-buffered '.*' | while read LINE0 
do 
    echo "${LINE0}"; 
done 
    
por 12.09.2016 / 23:22

Tags