Você precisa alimentar as porcentagens para o medidor por meio de entrada padrão. Tente isto para ver como funciona:
for i in $(seq 1 100); do echo $i; sleep 0.1; done | \
dialog --gauge "Example" 10 50
Assim, no seu caso, apenas faça seu trabalho em um subshell, gerando um número percentual de vez em quando, e canalize-o para dialog
. Algo parecido com isto:
(echo 1
sleep 1
echo 30
sleep 1
echo 90
sleep 1
echo 100
) | dialog --gauge "Working hard..." 10 40
(onde cada sleep 1
representa algum trabalho real, é claro ...).
EDIT: Alterando o texto
Para alterar o texto, você emite XXX
, um número, depois o novo texto e, em seguida, XXX
novamente. Exemplo:
(echo 30
sleep 1
echo XXX; echo 60; echo "New text"; echo XXX
sleep 1
echo 100
) | dialog --gauge "Working hard..." 10 40
Você precisa ler a página de manual de dialog
; tudo é explicado lá.