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á.