2012-08-03 16 views
9

Quiero capturar en mi script bash (en una variable) la salida de algún comando que imprime su salida a la terminal. He intentado lo siguiente:Script Bash que captura la salida en la terminal

TEST_OUT=`the_command ARG1` #Nope 

#Putting the line "the_command ARG1" into a separate script, testing2.sh, 

TEST_OUT=$(./testing2.sh) #Nope 

testing2.sh 
TEST_OUT=$? #Nope 

estoy 100% seguro de que cuando corro ...

> the_command ARG1 

... en un terminal, imprime al terminal exactamente la información que quiero capturar.

¡Gracias por cualquier ayuda!

+1

La salida de error estándar no parece capturarse en sus scripts, por lo que se imprimirá en el terminal. – C2H5OH

+1

Si la salida se envía a stderr, deberá redirigirla a stdout antes de que pueda capturarse en su var. Pruebe 'TEST_OUT = $ (the_command ARG1 2> & 1)' –

+0

Hola lo siento, nuevo para bash y scripts aquí ... ¿Hay 2 formas de imprimir en terminal, stderr y stdout? – JDS

Respuesta

16

Si la salida se envía a stderr, tendrá que redirigirlo a stdout antes de que se pueda capturar en su var. Pruebe:

TEST_OUT=$(the_command ARG1 2>&1) 
+0

Impresionante No sabía acerca de la diferencia b/w stderr y stdout. Buen material. – JDS

+1

Si desea * solo * stderr, use '$ (the_command ARG1 2> & 1>/dev/null)'. – chepner

Cuestiones relacionadas