PDA

View Full Version : [Bash] Script per mostrare il caricamento in %


gepeppe
02-09-2008, 10:09
Salve, io ho uno script che esegue per ogni file una operazione (non è importante l'operazione), senza stampare nulla a video.

Come posso, dopo ogni operazione mostrare una percentuale di "completamento"??
Cioè se ho 100 file, dopo ogni operazione partendo da 0 deve addizionare 1 e cosi via...

Io avevo pensato di mettere un clear prima di ogni addizione, in modo da far comparire il nuovo valore, ma c'è un modo per farlo senza usare clear ?? (che rallenta un po).

Io ho visto alcuni script/programmini che mi facevano vedere l'avanzamento in % senza fare clear...ma non ho la più pallida idea di come si faccia :D

Grazie

VICIUS
02-09-2008, 11:15
Prova a vedere se questo è simile a quello che vuoi fare te:
#!/bin/sh
echo "Completato: 1%\r\c"
sleep 1
echo "Completato: 10%\r\c"
sleep 1
echo "Completato: 22%\r\c"
sleep 1
echo "Completato: 31%\r\c"
sleep 1
echo "Completato: 47%\r\c"

sleep 1
echo "Completato: 100%"

Il trucco sta nel usare \r\c per tornare indietro e non andare a capo con echo in tutti gli output tranne l'ultimo.

gepeppe
02-09-2008, 11:39
Prova a vedere se questo è simile a quello che vuoi fare te:
#!/bin/sh
echo "Completato: 1%\r\c"
sleep 1
echo "Completato: 10%\r\c"
sleep 1
echo "Completato: 22%\r\c"
sleep 1
echo "Completato: 31%\r\c"
sleep 1
echo "Completato: 47%\r\c"

sleep 1
echo "Completato: 100%"

Il trucco sta nel usare \r\c per tornare indietro e non andare a capo con echo in tutti gli output tranne l'ultimo.

Ma in questo modo mi stampa cmq tutti gli echo uno sotto ad un altro...Non modifica la stessa riga

Cmq i file vengono "letti" in un ciclo for e al termine di ogni ciclo ho inserito quello che hai scritto.

VICIUS
02-09-2008, 11:44
Ma in questo modo mi stampa cmq tutti gli echo uno sotto ad un altro...Non modifica la stessa riga

Cmq i file vengono "letti" in un ciclo for e al termine di ogni ciclo ho inserito quello che hai scritto.
È strano dovrebbe stampare tutto sulla stessa riga. prova a trasformare tutti gli echo tranne l'ultimo in questo modo:
echo -n "Completato: 47%\r"

Edit: Tolto un echo di troppo :D

gepeppe
02-09-2008, 12:14
È strano dovrebbe stampare tutto sulla stessa riga. prova a trasformare tutti gli echo tranne l'ultimo in questo modo:
echo -n "Completato: 47%\r"

Edit: Tolto un echo di troppo :D

cmq me li stampa tutti...però stavolta senza andare accapo... :(

Ma non c'è un modo per far ripartire echo dall'inizio del rigo?? sempra che l'opzione /r non ha effetto.

VICIUS
02-09-2008, 12:26
Forse dipende dalla shell che stai usando oppure dal terminale, o qualche strana opzione. :boh: Qui su osx ha funzionato tutto al primo colpo.

gepeppe
02-09-2008, 18:48
Forse dipende dalla shell che stai usando oppure dal terminale, o qualche strana opzione. :boh: Qui su osx ha funzionato tutto al primo colpo.

uso la bash...strano però...

Rikiji
02-09-2008, 20:12
.

gepeppe
03-09-2008, 12:17
ottimo ora funziona. Grazie