É muito simples testar isso. Com -e
:
% bash -e -c 'false & echo waiting; if wait $!; then echo success; else echo failure; fi'
waiting
failure
Portanto, se um comando em segundo plano falhar, o shell não sairá automaticamente ( -e
não é suficiente).
Se você wait
estiver fora de um teste explícito, wait
retornará o código de retorno do processo em segundo plano com falha. Nesse caso, se -e
for especificado, o shell sairá:
% bash -e -c 'false & echo waiting; wait $!; echo returned'
waiting
Mesmos resultados com bash
ou sh
ou zsh
.