Anzeigen und Aktualisieren eines Zählers in bash

Ich denke, es ist ungefähr so: (Fedora14 / bash)

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

Aber es funktioniert nicht. Zweck: so, aber ohne das „Löschen“:

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

Ein Zählskript, das nicht den gesamten Bildschirm löscht, um stattdessen eine + 1-Zahl auszugeben es wird nur die Zeile gelöscht, in der gezählt wird, so dass es beispielsweise einen schönen „Fortschrittsbalken“ geben kann.

Antwort

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

Sie benötigen nicht ..1 für die Standard-Schrittbreite 1.

echo -n 

verhindert Zeilenumbrüche.

\r kehrt zum Zeilenanfang zurück (ohne Zeilenumbruch – \n) und ist besser als meine zuvor verwendete “ \ b „zum Zurücktreten eines einzelnen Zeichens, unhandlich, wenn Sie mehr als eine Ziffer haben. Vielen Dank an rozcietrzewiacz.

Antwort

Suchen Sie so etwas?

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.