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.