Não é possível criar um script bash mas pode executá-lo

0

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=
    
por greyxray 28.06.2017 / 12:08

1 resposta

0

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 .

    
por 28.06.2017 / 17:01