É 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 .