68 votes

Quelles sont les valeurs de sortie d'erreur pour diff?

Sur la page de manuel diff , j'ai trouvé ces valeurs de sortie:

     0     No differences were found. 
    1     Differences were found.
   >1     An error occurred.
 

Existe-t-il différentes valeurs de sortie supérieures à 1 pour différentes erreurs?

9voto

David W. Points 49436

Il y a peut-être, ou il peut ne pas être différents codes d'erreur en fonction de la version de diff que vous utilisez. Si je me souviens bien, la norme BSD diff toujours renvoyé un code de sortie 0, 1, ou 2.

Toutefois, la page de manuel n'est pas de la cartographie de tout ce qui pourrait faire la diff, mais la documentation que vous pouvez utiliser pour l'utilisation de la commande diff. Dans un script shell, je veux savoir si les fichiers correspondant (sortie = 0) ou ne correspond pas (sortie = 1). Cependant, dans mon script shell, je veux aussi savoir que la commande diff lui-même n'a pas de travail.

diff $file1 file2 > /dev/null 2>&1
if [ $? eq 0 ]
then
   echo "$file1 and $file2 are the same file"
elif [ $? eq 1 ]
   echo "$file1 and $file2 differ"
else
   echo "There was something wrong with the diff command"
fi

Imaginez si on m'a dit que 2 désigne la commande diff a échoué, mais une version plus récente de la commande diff fait une distinction entre un fichier que vous ne pouvez pas lire (sortie = 2) et un fichier manquant (sortie = 3). Maintenant, imaginez si je n'ai la suite dans une version antérieure de la commande diff, mais $file2 n'existe pas:

diff $file1 file2 > /dev/null 2>&1
if [ $? eq 2 ]
then
   echo "There was something wrong with the diff command"
elif [ $? eq 1 ]
   echo "$file1 and $file2 differ"
else
   echo "$file1 and $file2 are the same file"
fi

Dans le code ci-dessus, j'ai vérifié le code d'erreur de 2 et 1, mais pas 3. Ainsi, au lieu de la détection d'un fichier manquant, je suppose que les fichiers de correspondance.

La page de manuel essaie de faire en sorte que les futures mises à jour de l'OS n'est pas la cause de la plupart de vos scripts shell tout à coup l'échec. C'est pourquoi il a été séparé awk et nawk commande et séparé grep et egrep commande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X