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
\nja - 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”