2012-06-18 21 views
27

Bash ¿cómo capturar stderr a una variable?Bash ¿cómo capturar stderr a una variable?

me gustaría hacer algo como esto dentro de mi escritura del golpe

sh -c path/myExcecutable-bin 2>&1 =MYVARIABLE 

¿Cómo se envía la salida estándar de error a una variable?

+2

Este StackOverflow [thread] (http://stackoverflow.com/questions/962255/how-to-store-standard-error-in- a-variable-in-a-bash-script) debería responder su pregunta. –

+0

Vea uno de los muchos hilos relacionados, y [varias soluciones] (http://mywiki.wooledge.org/BashFAQ/002) – ormaaj

Respuesta

55

Para guardar tanto stdout y stderr a una variable:

MYVARIABLE="$(path/myExcecutable-bin 2>&1)" 

Tenga en cuenta que este intercala stdout y stderr en la misma variable.

Para guardar simplementestderr a una variable:

MYVARIABLE="$(path/myExcecutable-bin 2>&1 > /dev/null)" 
+5

Solo quiero señalar que guardará tanto stderr como stdout en la variable. Cuando solo necesitas 'stderr' usa' 2> & 1>/dev/null' –

+0

@IgorChubin Buen punto. Estaba basando mi respuesta original en lo que parecía que el OP quería hacer, pero eso no es necesariamente lo que realmente querían. Ver mis cambios –

+0

Bastante seguro de que debería ser "' stdout' _and_ 'stderr'", ¿no? –

Cuestiones relacionadas