Я устанавливаю среду тестирования для сайта travis-ci с помощью Ubuntu. Команды тестирований инкапсулируются в /home/travis/test_build.sh файла, в котором я пытаюсь вызвать скрипт , который устанавливает переменные . ./checkout.sh вроде объяснено здесь

Во время выполнения checkout.sh переменные устанавливаются правильно, но когда скрипт завершает свое выполнение, я вижу, что они возвращаются к пустым (в /home/travis/test_build.sh где они мне действительно нужны).

Как правильно создать сценарий в этом случае? Есть ли какие-либо настройки, которые я должен проверить, чтобы включить поиск?

Краткий пример /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"

Краткий пример 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"

Вывод после выполнения /home/travis/test_build.sh будет тогда:

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=

1 ответ1

0

На основании этого ответа:

Используйте set -a перед вызовом кода, который определяет переменную.

В вашем случае сразу после set -e вы можете добавить set -a .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .