Como sair de todos os scripts de chamada em Bash?
Pergunta
Digamos que eu tenho os seguintes scripts
cinza
echo in a
if test 1 -ne 2; then
echo oops
exit 1
fi
B.Sh
echo in b
./a.sh
echo in b 2
Ao executar o B.Sh, quero sair se o A.SH saía. Como eu faço isso?
(A saída atual é
in b
in a
oops
in b 2
E não é isso que eu quero)
Obrigado, Rivka
Solução
Verifique o status de retorno de um comando, a variável correspondente é $?
. Como alternativa, você pode curto-circuito usando command || exit
Outras dicas
echo in b
./a.sh && echo in b 2
Isso basicamente verifica se o primeiro script não sai diferente de zero. Se isso for verdadeiro, e só então ele executará a segunda função.
Eu não acho que existe uma maneira de fazer isso sem verificar explicitamente o status de retorno da subshell, por exemplo:
# This will run b.sh, and if that exits with a non-zero status, we will also
# exit with that same status; otherwise, we continue.
./b.sh || echo $?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow