Os documentos do Zenity têm um pequeno snippet de código que deve fazer exatamente o que você está procurando por.
#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Update System Logs" \
--text="Scanning mail logs..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi
Primeiro, tente copiar o código que está lá e executá-lo e confirme se ele funciona conforme o planejado. Em seguida, modifique para adicionar seu código, quando apropriado.
Se sua barra de progresso estiver travada em zero, certifique-se de ignorar quaisquer seções do script que possam estar pendentes e fazer você pensar que está realmente funcionando!
Editar: Conforme indicado na resposta abaixo, o motivo pelo qual não está funcionando é porque o zenity espera que o progresso seja repetido, como no exemplo de código.