Komentáře
- Můžete použít nebo upravit z tento github.com/noqqe/bash-progress-bar , pokud vám může pomoci
odpověď
To je poměrně jednoduché v prostém Bash:
#!/bin/bash # progress bar function prog() { local w=80 p=$1; shift # create a string of spaces, then change them to dots printf -v dots "%*s" "$(( $p*$w/100 ))" ""; dots=${dots// /.}; # print those dots on a fixed-width space plus the percentage etc. printf "\r\e[K|%-*s| %3d %% %s" "$w" "$dots" "$p" "$*"; } # test loop for x in {1..100} ; do prog "$x" still working... sleep .1 # do some work here done ; echo
První argument prog
je procento, ostatní se vytisknou za ukazatelem průběhu. Proměnná w
ve funkci řídí šířku pruhu. Po dokončení vytiskněte nový řádek, funkce jej nevytiskne.
Další možností by bylo použití nástroje pv
. Je to určeno pro měření propustnosti kanálu, ale můžeme pro něj vytvořit jeden:
for x in {1..100} ; do sleep .1 # do some work here printf . done | pv -pt -i0.2 -s100 -w 80 > /dev/null
Zde, -pt
povoluje indikátor průběhu a časovač, -s 100
nastavuje celkovou velikost výstupu a vše, co ve funkci vytiskneme, se proti této velikosti započítá.
Odpověď
Obecně to můžete implementovat přepsáním řádku. Pomocí \r
se vraťte na začátek řádek bez zápisu \n
do terminálu.
Když jste hotovi, posuňte řádek \n
.
Pomocí echo -ne
můžete:
- nevytisknout
\n
a - rozpoznat únikové sekvence jako
\r.
Zde je ukázka:
echo -ne "... (33%)\r" sleep 1 echo -ne "...... (66%)\r" sleep 1 echo -ne ".......... (100%)\r" echo -ne "\n"
EDIT: Nyní, cURL přichází s indikátorem průběhu: --progress-bar
, není to to, co chcete?
převzato z odpovědi t o https://stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script
Zjistili jsme, že u Google nejprve odpovězte pomocí následujících hledaných výrazů: „ukazatel průběhu bash“