Dans un script, si une commande renvoie une valeur différente de 0, c'est qu'il y a eu une erreur.
Il est possible d'arrêter le déroulement du script dans ce cas en mettant en tête
set -eu

On peut aussi essayer
set -Eeuo pipefail
qui va s'arrêter si un pipe est en défaut

Si une commande peut avoir le code de retour différent de 0, il faut le capturer pour ne pas arrêter le script en ajoutant && :
diff -q /tmp/file /usr/sbin/file > /dev/null && :
if [ $? == 0 ]; then
  echo "No diff"
fi

Source https://stackoverflow.com/a/27793459/158716