Você pode usar um arquivo externo como sua variável global. Aqui está um exemplo.
file="$(mktemp)"
f() { sleep 3; echo x; sleep 3; }
for i in {1..10} ; do
>>"$file" f &
done
switch=true
while $switch; do
sleep 1
cnt=$(wc -l "$file")
cnt="${cnt%%${file}}" #this is needed to remove the file name
#from the output of wc -l
echo "$cnt"
[ "$cnt" -ge 5 ] && switch=false
done
rm "$file"
Salvar isso em example
e o sourcing fornece isso:
$ . example
0
0
10
Quando você tiver acesso a
cnt=$(wc -l "$file")
cnt="${cnt%%${file}}"
é fácil refazer esse código em uma barra de progresso.
Não se esqueça de ajustar o eterno loop breaker [ "$cnt" -ge 5 ] && switch=false
à sua situação.