Na verdade, seria bom se a caixa de diálogo tivesse uma opção --show-elapsed
ou algo assim, não é fácil fazer isso atualmente.
A parte de exibição não é muito difícil: você pode (ab) usar a opção --title
para exibir o tempo decorrido. Você pode até fazer com que ele seja exibido abaixo do medidor adicionando mais \n
(e alterando o tamanho da caixa).
Maiscomplicadoéfazercomqueeleapareçaacadasegundo,mesmosehouver50sentreasatualizaçõesdestatus.Aquiestáumasoluçãousandoaopçãoread-t
timeout:
#!/bin/bashshow_dialog(){p=0#percentagedate1='date+%s'while["$p" != 100 ]; do
read -t 1 tmp && p=$tmp
elapsed="$(date -u --date @$(('date +%s' - $date1)) +%H:%M:%S)"
echo $p | dialog --title "File upgrade" --gauge "Please wait...\n\n\n\n$elapsed" 10 70 0
done
}
task() # fake task
{ for p in 'seq 1 100'; do echo $p; sleep 2; done; }
task | show_dialog