2010-07-30 29 views
24

Desea crear un efecto elegante imprimiendo [OK] al final de la última línea cuando finaliza una tarea.Continuar la salida en la misma línea

conseguimos esto:

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

he intentado cosas diferentes al final del primer eco, al comienzo de la segunda como \r, \c, \, el Google ... no es bueno.

yo quiero que la producción de este:

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

... Y 3 segundos después, añadir los [OK]:

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

Gracias,

+1

Por favor, no use 'echo', se adhieren a' printf', http leer: //www.opengroup.org/onlinepubs/009695399/utilities/echo.html para obtener más información sobre por qué. – Anders

Respuesta

44

Uso del -n opción para omitir la impresión de nueva línea al final. Más referencia en echo docs.

por lo que podría hacer algo como esto:

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

utilizan la más portátil printf

+0

Portátil de qué manera? – Johan

+2

ver aquí: http://en.wikipedia.org/wiki/Echo_%28command%29#cite_note-0 – ghostdog74

+5

Algunas implementaciones de echo usan el indicador '-n' para suprimir la nueva línea; otros usan '\ c' al final de la cadena. Si usa uno en su script y echo espera el otro, obtendrá "-n" delante de su salida, o "\ c" al final. Pero 'printf"% s "" $ 0: ... "' siempre funcionará como se espera. –

Cuestiones relacionadas