código de saída do diff

código de saída do diff

Se eu executar diff -qem dois arquivos e eles forem idênticos, o código de saída gerado echo $?será 0; se os arquivos forem diferentes, o código de saída será 1. Por que é que? De que forma o primeiro é diffum sucesso e o segundo um fracasso?

Usei os termos “sucesso” e “fracasso” com base em minha leitura e compreensão limitada dehttp://mywiki.wooledge.org/BashGuide/TestsAndConditionals:

  1. Status de saída
    Cada comando resulta em um código de saída sempre que é finalizado.
    Este código de saída é usado por qualquer aplicativo que o iniciou para avaliar
    se tudo correu bem. Este código de saída é como um valor de retorno de
    funções. É um número inteiro entre 0 e 255 (inclusive). A convenção
    determina que usemos 0 para denotar sucesso e qualquer outro número para denotar
    algum tipo de fracasso.O número específico é inteiramente específico da aplicação,
    e é usado para sugerir o que exatamente deu errado.

Eu deveria ter lido man diffaté o fim onde a convenção usada pelos desenvolvedores é clara.

Responder1

De man diff:

O status de saída é 0 se as entradas forem iguais, 1 se forem diferentes, 2 se houver problema.

Admito francamente que isso pode não sercompletamente padrãomas os códigos de saída sãomais o que você chamaria de "diretrizes" do que regras reais.

insira a descrição da imagem aqui

Nesse caso, desviar do padrão permite executar diffscripts facilmente.

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

Isso é semelhante ao grepqual sairá 0 se algo for encontrado e 1 se algo não for encontrado. Não consigo explicar a orientação entre 0 e 1 para diff. Presumo que eles optaram por resultados booleanos padrão C.

Isso realmente não importa. É apenas um número arbitrário.

Responder2

man diffdiga-nos

ESTADO DE SAÍDA

   The following exit values shall be returned:

    0     No differences were found.

    1     Differences were found.

   >1     An error occurred.

Chamar os valores de saída de "sucesso" e "falha" é uma escolha autolimitada. Os programas têm 8 bits inteiros para status de saída, valores de 0 a 255.

informação relacionada