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.