Estou com dificuldades para obter o valor de retorno de um script. O script que está me causando problemas é second.sh abaixo. Mas há uma interação presente com um script chamado first.sh , e essa interação parece ser a fonte do problema.
O primeiro script é um script de teste e direciona o segundo script. Ele precisa do segundo script para definir um ambiente de compilação cruzada (daí o motivo de um ponto inicial). O primeiro script invoca então make com várias variáveis definidas, como CXX e < em> CXXFLAGS .
# first.sh
. ./second.sh arg1
if [ "$?" -eq "0" ]; then
make
...
fi
. ./second.sh arg2
if [ "$?" -eq "0" ]; then
make
...
fi
. ./second.sh arg3
if [ "$?" -eq "0" ]; then
make
...
fi
O segundo script geralmente é executado de forma independente pelo usuário, e é bastante complicado porque está detectando plataformas, arquiteturas e outros recursos diversos. Ele define várias variáveis, como CXX e CXXFLAGS usado por make no primeiro script.
# second.sh
...
# if success, return 0
exit 0
...
# if failure, return non-0
exit 1
O problema que estou tendo é a chamada para exit em second.sh mata o terminal , então first.sh é interrompido em suas trilhas. Um problema semelhante ocorre quando o usuário o executa sozinho.
Quando tento alterar o segundo script para:
# second.sh
...
# if success, return 0
return 0
# else for failure, return non-0
return 1
Em seguida, na perspectiva first.sh , second.sh sempre falha, mesmo com return 0 .
Como eu adiciono um código de retorno que não mata o terminal em Bash?
Até hoje, tenho executado sem o primeiro script de teste, portanto, o segundo script não precisa retornar sucesso / falha. Mas eu estou tentando automatizar o teste, então eu realmente preciso ser capaz de obter um código de retorno