La solution :
particular_script || true
Exemple :
$ cat /tmp/1.sh
particular_script()
{
false
}
set -e
echo one
particular_script || true
echo two
particular_script
echo three
$ bash /tmp/1.sh
one
two
three
ne sera jamais imprimé.
Aussi, je veux ajouter que lorsque pipefail
est activé, il suffit que le shell pense que l'ensemble du tube a un code de sortie non nul lorsque l'une des commandes du tube a un code de sortie non nul (avec pipefail
il doit être le dernier).
$ set -o pipefail
$ false | true ; echo $?
1
$ set +o pipefail
$ false | true ; echo $?
0
Ajoutez simplement || true
après la commande où vous voulez ignorer l'erreur.
Ne vous arrêtez pas et enregistrez également le statut de sortie
Juste au cas où vous voudriez que votre script ne s'arrête pas si une commande particulière échoue et que vous souhaitiez également enregistrer le code d'erreur de la commande ayant échoué :
set -e
EXIT_CODE=0
command || EXIT_CODE=$?
echo $EXIT_CODE