Подтвердить что ты не робот

Как вводить путь с пробелом?

У меня есть основной файл, который использует (из основного источника я) источник файлов с переменными, указывающими на пути.

Файл свойств выглядит следующим образом:

TMP_PATH=/$COMPANY/someProject/tmp
OUTPUT_PATH=/$COMPANY/someProject/output
SOME_PATH=/$COMPANY/someProject/some path

Проблема заключается в SOME_PATH, я должен использовать путь с пробелами (я не могу его изменить).

Я попытался убежать в пробелы с кавычками, но до сих пор нет решения.

Я редактировал пути, проблема с одинарными кавычками - я использую другую переменную $COMPANY в пути

4b9b3361

Ответ 1

Используйте один из этих трех вариантов:

SOME_PATH="/mnt/someProject/some path"
SOME_PATH='/mnt/someProject/some path'
SOME_PATH=/mnt/someProject/some\ path

Ответ 2

Я вижу Федерико, что вы нашли решение самостоятельно. Проблема была в двух местах. Присвоениям требуется правильное цитирование в вашем случае

SOME_PATH="/$COMPANY/someProject/some path"

является одним из возможных решений.

Но в оболочке эти кавычки не сохраняются в памяти, поэтому, когда вы хотите использовать эту переменную, вам нужно процитировать ее снова, например:

NEW_VAR="$SOME_PATH"

потому что если нет, пространство будет расширено до уровня команды, например:

NEW_VAR=/YourCompany/someProject/some path

который не то, что вы хотите.

Для получения дополнительной информации вы можете проверить мою статью об этом http://www.cofoh.com/white-shell

Ответ 3

Вы можете избежать "пробела" char, поставив перед ним\right.

Ответ 4

SOME_PATH=/mnt/someProject/some\ path

должен работать

Ответ 5

Если файл содержит только назначения параметров, вы можете использовать следующий цикл вместо его поиска:

# Instead of source file.txt
while IFS="=" read name value; do
    declare "$name=$value"
done < file.txt

Это избавляет вас от необходимости указывать что-либо в файле и также более безопасно, так как вы не рискуете выполнить произвольный код из file.txt.

Ответ 6

Если путь в 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}"