2010-01-17 18 views
17

No estoy seguro de si es posible, pero lo que quiero hacer es ejecutar un comando bash y almacenar el resultado en una variable Y mostrarlo como si lanzó el comando normalmente. Aquí está mi código:Muestra la salida de un comando Bash y mantiene la salida en una variable

VAR=`svn checkout $URL` 

Así que quiero para almacenar la salida de VAR y todavía ver el resultado (y porque svn checkout tarda mucho tiempo, no puedo hacer eco $ VAR justo después ..)

Gracias

Respuesta

17

Si el comando se ejecuta desde un terminal, que puede hacer:

VAR=$(svn checkout $URL | tee /dev/tty) 
+1

Gah, me adelantó por segundo! –

+0

Tal vez porque probé lo anterior con 'v = $ (para i en $ (seq 20); echo $ i; sleep 0.2; done | tee/dev/tty)', ¿y usó 'sleep 1'? :-) –

+0

Perfecto, justo lo que necesitaba. ¡Gracias! – Selmak

2

usted no tiene que llamar a la externa tee:

VAR=$(svn checkout $URL) && echo $VAR 

o incluso:

VAR=$(svn checkout $URL); echo $VAR 
+0

Creo que la idea era que 'svn' lleva mucho tiempo, y el OP quería ver el resultado del comando' svn' en tiempo real, en lugar de hacerlo después. Incluso lo dice en la pregunta :-) –

+1

¡Creo que necesito ayuda sobre el flujo de alfabetización! –

Cuestiones relacionadas