Почему я не получаю файлы после введения переменной среды? - PullRequest
0 голосов
/ 18 июня 2020

Shell Script

git clonerepo project_name project
cd project
git checkout master
git fetch "https://sam@gerrit.com:443/a/project_name" refs/changes/56/157656/1 && git cherry-pick 
FETCH_HEAD
git submodule foreach --recursive 'git fetch --tags'
git submodule update --init --recursive

**#I am getting the modified files in the review here, let modified files='abc.txt cd.txt'.The modified 
files are space-separated.**
modified_files=$(git diff HEAD..origin/$GERRIT_BRANCH --name-only)
cd ../
echo $modified_files

вывод: ab c .txt cd.txt

# здесь вводится новая переменная env MODIFIED_FILES

echo "MODIFIED_FILES=$modified_files" > $BUILD_NUMBER"_modified_files.txt"

после ввода переменной env Я использую эту переменную в сценарии python. но там я получаю только один файл «ab c .txt»

Python script

import os
modified_files = os.environ.get('MODIFIED_FILES')
print(modified_files)

вывод: ab c .txt

1 Ответ

1 голос
/ 18 июня 2020

Проблема не в Python, а в командной строке вашей оболочки.

$ echo "MODIFIED_FILES=$modified_files"
MODIFIED_FILES=abc.txt cd.txt

Вы видите проблему? В этой переменной будет только первое имя файла. Вот почему вы всегда должны заключать переменные в двойные кавычки.

Предложение № 2: Если вам нужна переменная среды, вы должны ее экспортировать.

№ предложения. 3: Сделайте двойные кавычки для всего имени файла и заключите имя переменной в фигурные скобки.

echo "export MODIFIED_FILES=\"$modified_files\"" > "${BUILD_NUMBER}_modified_files.txt"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...