Para continuar usando set -e
, mas ainda permitir um erro conhecido, use este encantamento:
/bin/false || :
Isso usa o operador ||
para "consumir" o erro, de modo que ele seja considerado não fatal em um ambiente no qual set -e
esteja ativo.
Você já está usando 2>/dev/null
para suprimir o erro padrão, então tem certeza de que o erro está vindo da linha que você cita aqui? Além disso, em vez de usar exec
, proponho uma alternativa mais legível:
if ! nc -z localhost 9091 1> /dev/null 2>&1; then
port_free="yes"
fi
Como o código de retorno de nc
é verificado pela instrução if
, isso também é seguro após set -e
.