shell-script – ¿Por qué es útil el patrón "comando || verdadero"?

Pregunta:

Actualmente estoy explorando paquetes de Debian y he estado leyendo algunos ejemplos de código. Y en cada línea, por ejemplo, la secuencia postinst comandos postinst es un patrón.

some command || true
another command || true

Entonces, si algún comando falla, la línea devuelve verdadero, pero no veo cómo esto afecta la salida del programa.

Respuesta:

La razón de este patrón es que los scripts de mantenimiento en los paquetes Debian tienden a comenzar con set -e , lo que hace que el shell se cierre tan pronto como cualquier comando (estrictamente hablando, pipeline, list o comando compuesto) sale con un estado distinto de cero. Esto asegura que los errores no se acumulen: tan pronto como algo sale mal, el script se interrumpe.

En los casos en los que se permite que falle un comando en el script, agregar || true asegura que el comando compuesto resultante siempre salga con estado cero, por lo que la secuencia de comandos no se cancela. Por ejemplo, eliminar un directorio no debería ser un error fatal (evitar que se elimine un paquete); así que usaríamos

rmdir ... || true

ya que rmdir no tiene una opción para decirle que ignore los errores.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım