código de saída do diff

2

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

Eu usei os termos "sucesso" e "falha" com base na minha leitura e compreensão limitada do link :

  1. Exit Status
    Every command results in an exit code whenever it terminates.
    This exit code is used by whatever application started it to evaluate
    whether everything went OK. This exit code is like a return value from
    functions. It's an integer between 0 and 255 (inclusive). Convention
    dictates that we use 0 to denote success, and any other number to denote
    failure of some sort. The specific number is entirely application-specific,
    and is used to hint as to what exactly went wrong.

Eu deveria ter lido man diff até o final, onde a convenção usada pelos desenvolvedores é clara.

    
por DK Bose 16.11.2015 / 18:29

2 respostas

7

De man diff :

Exit status is 0 if inputs are the same, 1 if different, 2 if trouble.

Eu admito que isso pode não ser completamente padrão , mas os códigos de saída são mais o que você chamaria de "diretrizes" do que regras reais .

Nessecaso,desviar-sedopadrãopermitequevocêexecutefacilmentediffemscripts.

diffab&&echo"no difference" || echo "differences!"

Isso é semelhante a grep , que sairá de 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 . Eu suponho que eles foram com resultados booleanos padrão-C.

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

    
por Oli 16.11.2015 / 18:43
2

man diff nos diz

STATUS DE SAÍDA

   The following exit values shall be returned:

    0     No differences were found.

    1     Differences were found.

   >1     An error occurred.

A sua chamada para os valores de saída "sucesso" e "falha" é uma escolha autolimitada. Os programas têm um total de 8 bits para o status de saída, valores de 0 a 255.

    
por waltinator 16.11.2015 / 18:44