проблема с пробелами в имени каталога для переменной профиля

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

Это выглядит примерно так:

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". Это работает и хорошо, но мне было интересно, знает ли кто-нибудь, как можно заставить это работать без необходимости заключать переменную в кавычки?

0
задан 2 August 2017 в 18:37

1 ответ

Для присвоения переменной они будут работать:

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). И я бросил запаздывающую наклонную черту, так как это не нужно, и могло сбивать с толку в некоторых случаях, но это - больше персонального предпочтения.

0
ответ дан 2 November 2019 в 20:35

Другие вопросы по тегам:

Похожие вопросы: