Com base em esta resposta :
Use set -a
antes de chamar o código que define a variável.
No seu caso, logo após set -e
você pode adicionar set -a
.
Estou configurando o ambiente de teste para o site travis-ci usando o Ubuntu.
Os comandos de teste são encapsulados em /home/travis/test_build.sh
file, onde eu tento chamar um script que define as variáveis ambientais: . ./checkout.sh
como explicado aqui
Durante a execução de checkout.sh
, as variáveis estão definidas corretamente, mas quando o script termina suas execuções, vejo que elas estão de volta para o vazio (em /home/travis/test_build.sh
, onde eu realmente preciso delas).
Como posso criar o script corretamente neste caso? Há alguma configuração que eu preciso verificar para ativar o processamento?
Exemplo curto de /home/travis/test_build.sh
#!/bin/bash
echo "what is 0: $0"
set -x
. ./checkout.sh
echo "COMP_ARCH=$COMP_ARCH"
echo "FRAME_BASE=$FRAME_BASE"
Exemplo curto de checkout.sh
:
#!/bin/bash
echo "what is 0: $0"
set -e
export COMP_ARCH=slc6_amd64_gcc493
eval 'scramv1 runtime -sh' # link scramv1 is set to some other script which is not mine, starts with '#!/bin/sh' and which is supposed to set some additional variables as FRAME_BASE
echo "COMP_ARCH=$COMP_ARCH"
echo "FRAME_BASE=$FRAME_BASE"
A saída após a execução de /home/travis/test_build.sh
seria então:
what is 0: /home/travis/test_build.sh
what is 0: /home/travis/test_build.sh
COMP_ARCH=slc6_amd64_gcc493
FRAME_BASE=/home/1234/wer/base
COMP_ARCH=slc6_amd64_gcc493
FRAME_BASE=
Com base em esta resposta :
Use set -a
antes de chamar o código que define a variável.
No seu caso, logo após set -e
você pode adicionar set -a
.
Tags bash linux shell shell-script script