Como explicado no manual , todos os scripts são executados com sh -e
. Isso significa que qualquer falha de comando não tratada terminará o script com um erro. Se você tem código que pode retornar falha, você codifica como
command || true
ou envolvê-lo em um condicional ou algo assim.
A propósito, seu código é melhor escrito como
ps ax | grep "[p]ostgres: wal writer process"
Veja também link
Então, em resumo, você provavelmente estaria procurando algo como
if ps aux | grep '[p]ostgres: wal writer process'
then
: already running
else
: start it up
fi
Agora que grep
é executado como parte de uma condicional, uma falha não é mais considerada sem tratamento (mesmo se você não tiver uma cláusula else
!) e, portanto, ela será executada com segurança em set -e
. / p>