Você ainda pode usar set -e
. Se você tem uma declaração específica que você espera que ele falhe, você simplesmente precisa capturar o estado de erro e "manipulá-lo":
$ cat 454756.sh
#!/bin/bash
set -e
[[ 1 -eq 2 ]] || :
echo "Still got here!"
$ ./454756.sh
Still got here!
set -e
abortará o script em qualquer condição de erro não detectada . Caso contrário, você não poderá usar as instruções if
.
# this also still works
set -e
if /bin/false; then
echo "nope"
else
echo "yep"
fi
O encantamento || :
é uma maneira sucinta de "comer" qualquer erro lançado por qualquer comando, o que é útil quando você está querendo usar set -e
e tem comandos específicos cuja falha é perfeitamente aceitável .
Outra maneira de fazer isso é desabilitar -e
antes do comando em questão e redefini-lo depois:
set -e
do_stuff
set +e
/bin/false
set -e