Bash: ejecuta un ejecutable que da un buen estado de salida


32

Quiero ejecutar un ejecutable en Linux y, independientemente del estado de salida que devuelva, quiero devolver un buen estado de salida. (es decir, sin error)

(Esto se debe a que estoy usando sh -exy quiero que el script siga ejecutándose incluso si falla un comando (específico)).

Respuestas:


47

Prueba esto:

command || true

De man bash:

El shell no sale si el comando que falla es parte de la lista de comandos inmediatamente después de un tiempo o hasta la palabra clave, parte de la prueba después de las palabras reservadas if o elif, parte de cualquier comando ejecutado en una lista && o ⎪⎪ excepto el después del comando && o ⎪⎪ final, cualquier comando en una tubería pero el último, o si el valor de retorno del comando se invierte con!.


también una buena :)
voretaq7

1

Pruebe (executable ; exit 0)o, alternativamente, envuélvalo en un script de shell que siempre salga de 0.


1
Esto funciona bien para la mayoría de los casos, pero configura una subshell, por lo que si, por ejemplo, (cd foo; exit 0)tiene éxito, no terminará en "foo" después ya que su cwd regresa a la que estaba anteriormente. Sin embargo, cd foo || truete dejará en "tonto" si tiene éxito.
Pausado hasta nuevo aviso.

Buen punto: si su proceso tiene efectos secundarios adicionales (configuración de variables de entorno, cambio de directorios, etc.), esto no funcionará.
voretaq7
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.