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