У меня есть этот конфигурационный файл (обычный текстовый файл, заканчивающийся в .cfg)Как читать и печатать содержимое файла (некоторые настройки) внутри целевого файла makefile?
# The application name
learningErlangTesting
# The node name
mysql_testing
Кроме того, у меня есть Makefile:
ok:
APP=$(shell cat nodes.cfg | sed -n '2p')
NODE=$(shell cat nodes.cfg | sed -n '5p')
echo $(APP)
echo $(NODE)
Когда я бегу сделать нормально я
APP=learningErlangTesting
NODE=mysql_testing
echo
echo
Мои переменные пустые, кажется, я не могу их распечатать и не использовать для создания пути к папке (который я намереваюсь делать после того, как я получу свои руки).
Что я делаю неправильно?
Большое спасибо, Desmond
Отказано +1, потому что 'cat ... | sed ... 'это пародия. Исправьте стилистическую ошибку OP и опустите UUOC! –
Я попробовал вторую версию, и она работает ... Не могли бы вы немного объяснить: что такое $$ (...). Я знаю, что $ (...) выполняет что-то в подоболочке, но не знает о $$ (...). Также требуется объявлять переменные в make, вне цели? Большое спасибо, Desmond – adragomir
Вам нужно прочитать о синтаксисе makefile. Make-файлы не являются сценариями оболочки, а синтаксис makefile не является синтаксисом оболочки. '$ (...)' в make-файлах не ссылается на выполнение вещей в подоболочке, это относится к ссылке на переменные. Путаница в make-файлах заключается в том, что они _contain_ shell-скрипты: рецепты правил - это сценарии оболочки и используют синтаксис оболочки. Чтобы избежать знака доллара, поэтому он передается оболочке вместо интерпретируемого make, вы удваиваете его, поэтому '$$' расширяется до одного '$', который может быть передан в оболочку. http://www.gnu.org/software/make/manual/html_node/Introduction.html – MadScientist