In der Tat wäre es schön, wenn Dialog eine --show-elapsed
Option oder etwas hätte, es ist derzeit nicht einfach, dies zu tun.
Der Anzeigeteil ist nicht zu hart: Sie können (ab) die --title
Option verwenden, um die abgelaufene Zeit anzuzeigen. Sie können es sogar dazu bringen, unterhalb der Anzeige anzuzeigen, indem Sie mehr hinzufügen \n
(und die Boxgröße ändern).
Schwieriger ist es, es jede Sekunde anzeigen zu lassen, auch wenn zwischen den Statusaktualisierungen 50 Sekunden liegen. Hier ist eine Lösung mit read -t
Timeout-Option:
#!/bin/bash show_dialog() { p=0 # percentage date1=`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