Na sua configuração, os dados passaram pv
enquanto ainda são processados no lado direito. Você poderia tentar mover pv
para o lado mais à direita desta forma:
seq 20 | while read line; do sleep 1; echo ${line}; done | pv -l -s 20 > /dev/null
Atualização: Com relação à sua atualização, talvez a solução mais fácil seja usar um pipe nomeado e um subshell para monitorar o progresso:
#! /bin/bash
trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
(rm /tmp/progress.pipe; mkfifo /tmp/progress.pipe; tail -f /tmp/progress.pipe | pv -l -s 20 > /dev/null)&
limit=10
seq 20 | \
while read num
do
sleep 1
if [ $num -gt $limit ]
then
echo $num
fi
echo $num > /tmp/progress.pipe
done