Você pode modificar um pouco seu script dessa maneira
#!/bin/bash
…
./update_artifact1.sh $ARTIFACT_VERSION
exit_state_1=$?
./update_artifact2.sh $ARTIFACT_VERSION
exit_state_2=$?
./update_artifact3.sh $ARTIFACT_VERSION
exit_state_3=$?
exit_state_all=$[ $exit_state_1 && $exit_state_2 && $exit_state_3 ]
exit $exit_state_all
Nota:
- Cada comando retorna um código de saída que
basharmazena em$?. É0se não houver erro ou um número diferente se houver um erro.
Depois de cada linha, o valor de$?é atualizado, então você precisa armazenar em uma variável (nesse caso, usamosexit_state_1...exit_state_n).
No final, você quer que seu script retorne somente um código de erro com 0, se estiver tudo ok, e percebemos isso com$[ $a || $b || $c ].
Observe que$[ 0|| 0 || 0 ]é 0 enquanto$[ $a || $b || $c ]com pelo menos um em$a,$b,$cdiferente de0retorna 1. - É importante o ! na primeira linha quando você tem que escrever
#!/bin/bashpara dizer ao sistema que é um script que deve ser executado em umbashshell.
Você pode achar interessante ler mais sobre o shebang aqui. - Como observado em um comentário também se você colocar
set -eem algum lugar no seu script antes dessas linhas, o script será interrompido no primeiro erro sem processar a outra linha, e retornará um código de erro (o do último comando executado).