Tem certeza de que wait
está terminando com um status de saída diferente de zero? Considere, por exemplo:
false || { echo "At least ..."; EXIT_CODE=1; }
Isso gerará a mensagem e definirá EXIT_CODE
apropriadamente.
Inicialmente, pensei que era isso que você procurava:
wait ${job} || ( echo "At least ..."; EXIT_CODE=1 )
O problema com esta abordagem é que o conteúdo de (...)
é executado em um subshell - a mudança para o valor de EXIT_CODE
será local para essa subshell (ou seja, não será visível quando você tentar leia depois).
Considere, por exemplo:
EXIT_CODE=0
false || ( echo "At least ..." ; EXIT_CODE=1; echo "code: ${EXIT_CODE}" )
echo "final code: ${EXIT_CODE}"
A saída será:
At least ...
code: 1
final code: 0
Sugiro não tentar ser muito chique:
if ! wait ${job}; then
echo "At least ..."
EXIT_CODE=1;
fi