Kommentit
- Voit käyttää tai mukauttaa tämä github.com/noqqe/bash-progress-bar jos se voi auttaa sinua
Vastaa
Tämä on melko yksinkertaista tehdä yksinkertaisesti 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
Ensimmäinen argumentti prog
on prosenttiosuus, muut tulostetaan etenemispalkin jälkeen. Funktion muuttuja w
ohjaa palkin leveyttä. Tulosta uusi viiva, kun olet valmis, toiminto ei tulosta sitä.
Toinen mahdollisuus olisi käyttää pv
-työkalua. Se on tarkoitettu putkiston läpimenon mittaamiseen, mutta voimme luoda sen sille:
for x in {1..100} ; do sleep .1 # do some work here printf . done | pv -pt -i0.2 -s100 -w 80 > /dev/null
Täällä, -pt
sallii etenemispalkin ja ajastimen, -s 100
asettaa kokonaislähdekoon, ja mikä tahansa funktion sisällä tulostettava tulos lasketaan tähän kokoon.
Vastaa
Yleensä voit toteuttaa tämän korvaamalla rivi. Palaa alkuun \r
rivi kirjoittamatta \n
päätelaitteeseen.
Kirjoita \n
, kun olet tehnyt linjan eteenpäin.
Käytä echo -ne
:
- ei tulosta
\n
ja - tunnistamaan pakosarjat, kuten
\r.
Tässä ”demo:
echo -ne "... (33%)\r" sleep 1 echo -ne "...... (66%)\r" sleep 1 echo -ne ".......... (100%)\r" echo -ne "\n"
MUOKKAA: CURL: n mukana tulee etenemispalkki: --progress-bar
, eikö se ole mitä haluat?
otettu vastauksesta t o https://stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script
Löysin, että Googlen kanssa ensimmäinen vastaus seuraavilla hakutermeillä: ”edistyksellinen edistymispalkki”