Você tem vários "problemas" com o seu script como está escrito. O que fiz foi copiar o script e, para fins de teste e avaliação, simplificá-lo fazendo como substituir o mongorestore
por sleep 9999
e inserindo echo
da mensagem de rastreio anexada a um arquivo de log. O longo e curto é que não me parece que você precisa de qualquer armadilhas; basta substituir sua declaração mongorestore
por:
( mongorestore ...
exit_code=$?
[ $exit_code -ne 0 ] \
&& printf "Process %s for file %s failed with exit code %s\n" \
$BASHPID "${file%.*}" $exit_code
) &
BTW, uma maneira simples de verificar se todos os subprocessos foram gerados em paralelo é abrir outro terminal e executar pgrep -a mongorestore
.
Além disso, o uso de EXIT_CODE no final do seu script parece nunca ter um valor, portanto, o comando exit
deve falhar com algum tipo de erro, o que significaria que seu script sempre sairia com um erro. erro.