Al usar el brew install foo
comando con foo
devoluciones ya instaladas
Warning: foo-3.5.2 already installed
¿Es esto técnicamente un error, como stderr, o es este mensaje simplemente stdout? No se especifica en la documentación. Lo pregunto porque tengo un guión que dice:
#!/bin/bash
brew install foo
if [ $? -eq 0 ]; then
echo OK
else
echo FAIL
fi
(Es un script simple que me ayuda a aprender condicionales de if-then: ¡no juzgues!) Cada vez que lo ejecuto, el script regresa OK
en conjunción con lo anterior Warning
. Esto sugeriría que la advertencia no es un error / falla, ¿verdad?
bash -version
desde la línea de comandos en Mac OS X 10.9.5, obtengo la versión devuelta de3.2.53
. Y eso parece algo conectado a la3.5.2
en su línea de advertencia.Respuestas:
Eso suena como una advertencia impresa por la aplicación de preparación, pero Bash no es consciente de un error. Si Bash lo ve como un error depende de si la aplicación lo envía a la secuencia de error o la secuencia de salida, y cuál es el código de salida. Dado que su secuencia de comandos obtiene un OK, bash cree que el comando está devolviendo 0, lo que significa que el comando bash se ejecutó correctamente. Por lo tanto, brew debe enviar advertencias de este tipo a stdout, en lugar de stderr.
¿Sabe cómo usar 2 & gt; Cómo redirigir stderr a un archivo? Podría redireccionar stderr (2) y stdout mientras ejecuta su script a dos archivos diferentes. A continuación, puede ver en qué secuencia se imprime la advertencia.
fuente