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
bash
armazena em$?
. É0
se 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,$c
diferente de0
retorna 1. - É importante o ! na primeira linha quando você tem que escrever
#!/bin/bash
para dizer ao sistema que é um script que deve ser executado em umbash
shell.
Você pode achar interessante ler mais sobre o shebang aqui. - Como observado em um comentário também se você colocar
set -e
em 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).