Tengo un script Bash que ejecuta un programa con parámetros. Ese programa genera algún estado (haciendo esto, haciendo eso ...). No hay ninguna opción para que este programa sea silencioso. ¿Cómo puedo evitar que el script muestre algo?
Estoy buscando algo como el "eco desactivado" de Windows .
echo foo > $(tty)
un script y ejecute./test.sh &> /dev/null
: la salida todavía se imprime en el terminal. Por supuesto, esto no es un problema si está escribiendo un script que no utiliza dichos comandos./dev/null
existe en Cygwin, no necesita usarlonul
.Algo como
Esto evitará la salida estándar y la salida de error, redirigiéndolos a ambos
/dev/null
.fuente
2>/dev/null
Tratar
:
es la abreviatura de "no hacer nada".$()
es solo tu comando.fuente
0
(correcto). Veamos un ejemplo usando un comandofalse
que siempre devuelve1
(falla). Por ejemplo( echo foo | tee file ; false ) && echo bar
muestrafoo
. Usando su truco para suprimir la salida:( : $(echo foo | tee file ; false) ) && echo bar
. Pero muestrabar
que el código de estado de retorno es0
(este no es el código de estado devueltofalse
). Actualice su respuesta con esta limitación. SaludosDUMMY=$(yourcommand)
? No tiene la limitación que ha mencionado. :)DUMMY=$( echo foo | tee file ; false ) && echo bar
no muestra nada. Y seDUMMY=$( echo foo | tee file ; true ) && echo bar
muestra el comandobar
. Avíseme si proporciona una respuesta para votarlo ;-) SaludosUna alternativa que puede encajar en algunas situaciones es asignar el resultado de un comando a una variable:
Dado que Bash y otros intérpretes de línea de comandos POSIX no consideran las asignaciones de variables como un comando, se respeta el código de retorno del comando actual.
Nota: la asignación con la palabra clave
typeset
odeclare
se considera como un comando, por lo que el código de retorno evaluado en caso de que sea la asignación en sí y no el comando ejecutado en el sub-shell:fuente
Al igual que la publicación de andynormancx , use esto (si está trabajando en un entorno Unix):
O puede usar esto (si está trabajando en un entorno Windows):
fuente
> nul
en Windows con cygwin o git bash y ahora esté atascado con unnul
archivo que no se puede eliminar, pruebe esta respuesta , funcionó de maravilla.Eche un vistazo a este ejemplo del Proyecto de documentación de Linux :
Dicho esto, puedes usar esta simple redirección:
fuente
En su secuencia de comandos, puede agregar lo siguiente a las líneas que sabe que darán una salida:
O también puedes probar
fuente
>>
)?