2016-06-08 3 views
0

Используя bash из msys2 в Windows 10, я не могу установить переменную в переменную среды Windows, содержащую parens, то есть '(', в сценарии bash. Например,Развернуть переменную среды bash, содержащую '('

p86="$PROGRAMFILES(x86)" 

не работает, он расширяет переменную ENV $PROGRAMFILES. Я попытался убежать с обратными косыми чертами, то есть. «$ PROGRAMFILES \ (x86 \)», но это не работает. есть ли способ обойти эту проблему в bash? или parens просто не разрешены в расширенных переменных? Все переменные окон доступны в рабочей среде.

+0

Будет значение 'echo $ p86' после объявления? – heemayl

ответ

1

Обычно вы используете ${..} разыменования переменной, например:

echo "${a}bc" 

будет печатать переменную $a и затем буквального bc.

Try:

p86="${PROGRAMFILES(x86)}" 

Alternative вы должны проверить выход env, чтобы увидеть, если переменная присутствует:

env | grep PROGRAM 
+1

@jenesaisquoi Один взлом, не возобновленный, может быть, чтобы grep значение из 'env':' env | grep -P '(? <= ProgramFiles \ (x86 \) =). * $' 'или' env | awk -F = '$ 1 == "ProgramFiles (x86)" {print $ 2}' ' – andlrc

0

Использование процессора командной Windows:

PFX86="$(cmd //c 'echo %ProgramFILES(x86)%')" 
Смежные вопросы