La solución:
particular_script || true
Ejemplo:
$ 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
nunca se imprimirá.
Además, quiero agregar eso cuando pipefail
está activado, es suficiente para que Shell piense que toda la tubería tiene un código de salida distinto de cero cuando uno de los comandos en la tubería tiene un código de salida distinto de cero (con pipefail
apagado debe ser el último).
$ set -o pipefail
$ false | true ; echo $?
1
$ set +o pipefail
$ false | true ; echo $?
0
Solo agrega || true
después del comando en el que desea ignorar el error.
No te detengas y también guarda el estado de salida
Por si acaso, si desea que su secuencia de comandos no se detenga si falla un comando en particular y también desea guardar el código de error del comando fallido:
set -e
EXIT_CODE=0
command || EXIT_CODE=$?
echo $EXIT_CODE