2010-07-30 20 views
24

Si desidera eseguire un effetto di fantasia stampando [OK] alla fine dell'ultima riga al termine di un'attività.Continua l'output sulla stessa riga

ottenuto questo:

echo "$0: Starting backup process in '$backupdir'... " 
sleep 3 
echo '[OK]' 

ho provato cose diverse, alla fine del primo eco, all'inizio del secondo come \r, \c, \, concentrandoci ... Non va bene.

voglio che questa uscita:

./backup.sh: Starting backup process in '/backup'...

... E 3 secondi più tardi, aggiungere i [OK]:

./backup.sh: Starting backup process in '/backup'... [OK]

Grazie,

+1

prega di non utilizzare 'echo', attenersi a' printf', leggere http: //www.opengroup.org/onlinepubs/009695399/utilities/echo.html per ulteriori informazioni sul perché. – Anders

risposta

44

Utilizzare il -n opzione per saltare stampa newline alla fine. Più riferimento a echo docs.

Così si potrebbe fare qualcosa di simile:

echo -n "$0: Starting backup process in '$backupdir'... " 
12

utilizzare il più portabile printf

+0

Portatile in che modo? – Johan

+2

vedere qui: http://en.wikipedia.org/wiki/Echo_%28command%29#cite_note-0 – ghostdog74

+5

Alcune implementazioni di echo usano il flag '-n' per sopprimere il newline; altri usano '\ c' alla fine della stringa. Se ne usi uno nel tuo script, e echo si aspetta l'altro, avrai "-n" davanti al tuo output, o "\ c" alla fine. Ma 'printf"% s "" $ 0: ... "' funzionerà sempre come previsto. –

Problemi correlati