Я пытаюсь создать переменную для каталога, в имени которого есть пробел в моем профиле.
Это выглядит примерно так:
variable=/path/to/directory/with space/; export $variable
Я пробовал много разных вариантов ниже, некоторые из которых я, вероятно, забыл добавить:
variable=/path/to/directory/"with space/"; export $variable
variable=/path/to/directory/"with\ space/"; export $variable
variable="/path/to/directory/with space/"; export $variable
variable='/path/to/directory/with space/'; export $variable
variable='/path/to/directory/with\ space/'; export $variable
variable=""/path/to/directory/with space/""; export $variable
variable="'/path/to/directory/with space/'"; export $variable
variable=/path/to/directory/with\ space/; export $variable
variable=/path/to/directory/with\\ space/; export $variable
variable=/path/to/directory/with\\\ space/; export $variable
variable=/path/to/directory/with\\\\ space/; export $variable
Я могу получить его в работать с одной из вышеуказанных версий, но я должен процитировать переменную, т.е. ls "$variable"
. Это работает и хорошо, но мне было интересно, знает ли кто-нибудь, как можно заставить это работать без необходимости заключать переменную в кавычки?
Для присвоения переменной они будут работать:
VARIABLE="/path/to/directory/with space" # Preferred way
VARIABLE='/path/to/directory/with space'
VARIABLE=/path/to/directory/"with space"
VARIABLE=/path/to/directory/'with space'
VARIABLE=/path/to/directory/with" "space
VARIABLE=/path/to/directory/with' 'space
VARIABLE=/path/to/directory/with\ space
Для экспорта его необходимо использовать его имя (VARIABLE
), не его содержание ($VARIABLE
).
export VARIABLE
Или делайте уроки и экспортируйте в одной строке:
export VARIABLE="/path/to/directory/with space"
Для использования его необходимо всегда заключать его в кавычки, для предотвращения разделения слова (и globbing в других случаях).
ls "$VARIABLE"
Также, я написал имя в верхнем регистре здесь, так как это - конвенция для переменных среды (и переменные оболочки как RANDOM
). И я бросил запаздывающую наклонную черту, так как это не нужно, и могло сбивать с толку в некоторых случаях, но это - больше персонального предпочтения.