La soluzione:
particular_script || true
Esempio:
$ 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
non verrà mai stampato.
Inoltre, voglio aggiungere che quando pipefail
è attivo, è sufficiente che la shell pensi che l'intera pipe abbia un codice di uscita diverso da zero quando uno dei comandi nella pipe ha un codice di uscita diverso da zero (con pipefail
deve essere tolto l'ultimo).
$ set -o pipefail
$ false | true ; echo $?
1
$ set +o pipefail
$ false | true ; echo $?
0
Basta aggiungere || true
dopo il comando in cui vuoi ignorare l'errore.
Non fermarti e salva anche lo stato di uscita
Nel caso in cui desideri che il tuo script non si fermi se un particolare comando fallisce e vuoi anche salvare il codice di errore del comando fallito:
set -e
EXIT_CODE=0
command || EXIT_CODE=$?
echo $EXIT_CODE