Ответ 1
Используйте один из этих трех вариантов:
SOME_PATH="/mnt/someProject/some path"
SOME_PATH='/mnt/someProject/some path'
SOME_PATH=/mnt/someProject/some\ path
У меня есть основной файл, который использует (из основного источника я) источник файлов с переменными, указывающими на пути.
Файл свойств выглядит следующим образом:
TMP_PATH=/$COMPANY/someProject/tmp
OUTPUT_PATH=/$COMPANY/someProject/output
SOME_PATH=/$COMPANY/someProject/some path
Проблема заключается в SOME_PATH
, я должен использовать путь с пробелами (я не могу его изменить).
Я попытался убежать в пробелы с кавычками, но до сих пор нет решения.
Я редактировал пути, проблема с одинарными кавычками - я использую другую переменную $COMPANY
в пути
Используйте один из этих трех вариантов:
SOME_PATH="/mnt/someProject/some path"
SOME_PATH='/mnt/someProject/some path'
SOME_PATH=/mnt/someProject/some\ path
Я вижу Федерико, что вы нашли решение самостоятельно. Проблема была в двух местах. Присвоениям требуется правильное цитирование в вашем случае
SOME_PATH="/$COMPANY/someProject/some path"
является одним из возможных решений.
Но в оболочке эти кавычки не сохраняются в памяти, поэтому, когда вы хотите использовать эту переменную, вам нужно процитировать ее снова, например:
NEW_VAR="$SOME_PATH"
потому что если нет, пространство будет расширено до уровня команды, например:
NEW_VAR=/YourCompany/someProject/some path
который не то, что вы хотите.
Для получения дополнительной информации вы можете проверить мою статью об этом http://www.cofoh.com/white-shell
Вы можете избежать "пробела" char, поставив перед ним\right.
SOME_PATH=/mnt/someProject/some\ path
должен работать
Если файл содержит только назначения параметров, вы можете использовать следующий цикл вместо его поиска:
# Instead of source file.txt
while IFS="=" read name value; do
declare "$name=$value"
done < file.txt
Это избавляет вас от необходимости указывать что-либо в файле и также более безопасно, так как вы не рискуете выполнить произвольный код из file.txt
.
Если путь в Ubuntu "/home/ec2-user/Name of Directory", выполните следующие действия:
1) Файл Java build.properties:
build_path='/home/ec2-user/Name\\ of\\ Directory'
Где ~/
равно /home/ec2-user
2) Jenkinsfile:
build_path=buildprops['build_path']
echo "Build path= ${build_path}"
sh "cd ${build_path}"