código de salida de diferencia

código de salida de diferencia

Si ejecuto diff -qdos archivos y son idénticos, el código de salida generado por echo $?es 0; si los archivos difieren, el código de salida es 1. ¿Porqué es eso? ¿En qué sentido el primero es diffun éxito y el segundo un fracaso?

Utilicé los términos "éxito" y "fracaso" basándose en mi lectura y comprensión limitada dehttp://mywiki.wooledge.org/BashGuide/TestsAndConditionals:

  1. Estado de salida
    Cada comando genera un código de salida cada vez que finaliza.
    Este código de salida lo utiliza cualquier aplicación que lo haya iniciado para evaluar
    si todo salió bien. Este código de salida es como un valor de retorno de
    funciones. Es un número entero entre 0 y 255 (inclusive). La convención
    dicta que usemos 0 para denotar éxito y cualquier otro número para denotar
    algún tipo de fracaso.El número específico es completamente específico de la aplicación.,
    y se utiliza para dar pistas de qué salió mal exactamente.

Debería haber leído man diffhasta el final donde queda clara la convención utilizada por los desarrolladores.

Respuesta1

De man diff:

El estado de salida es 0 si las entradas son iguales, 1 si son diferentes, 2 si hay problema.

Admito libremente que esto podría no sercompletamente estándarpero los códigos de salida sonmás lo que llamarías "directrices" que reglas reales.

ingrese la descripción de la imagen aquí

En este caso, desviarse del estándar le permite ejecutar diffscripts fácilmente.

diff a b && echo "no difference" || echo "differences!"

Esto es similar a grepque saldrá 0 si se encuentra algo y 1 si no se encuentra algo. No puedo explicar la orientación entre 0 y 1 para diff. Supongo que optaron por resultados booleanos estándar C.

Realmente no importa. Es sólo un número arbitrario.

Respuesta2

man diffCuéntanos

ESTADO DE SALIDA

   The following exit values shall be returned:

    0     No differences were found.

    1     Differences were found.

   >1     An error occurred.

Llamar a los valores de salida "éxito" y "fracaso" es una opción autolimitada. Los programas tienen 8 bits completos para el estado de salida, valores de 0 a 255.

información relacionada