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

Foi útil?

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
scroll top