Проблема изоляции переменной среды в сценарии оболочки

1390
Not Rick Astley

Я новичок здесь, но stackoverflow помог мне в прошлом.

Я пишу сценарий оболочки Bash для создания make-файла (начиная с малого).

echo "\ include \$(GNUSTEP_MAKEFILES)/common.make  APP_NAME = $PRODUCT_NAME $PRODUCT_NAME_OBJC_FILES = source.m  include \$(GNUSTEP_MAKEFILES)/application.make"\ > GNUmakefile 

Переменная среды, установленная в среде IDE, в которой она используется, равна $ PRODUCT_NAME . Теперь bash, очевидно, рассматривает этот сценарий как ссылку на переменную среды $ PRODUCT_NAME_OBJC_FILES . Я понимаю почему, но я не знаю, как обойти это. Есть указатели?

$ PRODUCT_NAME оценивается надлежащим образом, когда подчеркивание не следует сразу же после этого, но лишний пробел запутывает ситуацию.

1
Если вы хотите серьезно относиться к сценариям оболочки bash, вы можете прочитать [Руководство по расширенному написанию сценариев Bash] (http://www.google.com/search?q=advanced+bash+scripting) (также называемое «ABS»). ). JanC 13 лет назад 0

1 ответ на вопрос

2
David Z

Используйте $_OBJC_FILES. В фигурных скобках Bash явно указывает, где заканчивается имя переменной.