Een teller weergeven en bijwerken in bash

Ik denk dat het ongeveer zo is: (Fedora14 / bash)

#!/bin/bash for i in {0..10..1}; do echo -e "$i""\c" echo -e "\n\r" sleep 1 done 

Maar het werkt niet. Doel: zoals dit, maar zonder de “clear”:

#!/bin/bash for i in {0..10..1}; do echo -e "$i" sleep 1 clear done 

Dus een telscript dat niet het hele scherm verwijdert om een +1 nummer uit te voeren, het verwijdert alleen de regel waar de telling is, zodat er bijv .: een mooie “voortgangsbalk” kan zijn ..

Antwoord

for i in {0..15}; do echo -ne "$i""\r"; sleep 1; done; echo 

Je hebt ..1 niet nodig voor stapbreedte 1, wat standaard is.

echo -n 

voorkomt nieuwe regels.

\r keert terug naar het begin van de regel (zonder nieuwe regel – \n), en beter dan mijn voorheen gebruikte ” \ b “om een enkel teken achteruit te lopen, onhandig als je meer dan één cijfer-nummer hebt. Met dank aan rozcietrzewiacz.

Antwoord

Bent u op zoek naar zoiets?

for i in {1..10}; do printf "\r%2d" $i sleep 1 done printf "\n" 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *