Я пробовал два метода.A) использование функции оболочки make и B) установка переменной окружения.Оба метода сталкиваются с проблемой экранирования.
Грубо говоря, команда, которую я пытаюсь запустить в make-файле:
awk '{if ( $0 !~ /^#/ ) print $2 }' data.dat | tail -1
Я хочу сохранить это значение в переменной для последующего использования.Это восклицательный знак, который вызывает проблемы.Я пробовал разные способы избежать этого, но безрезультатно.
РЕДАКТИРОВАТЬ: После попытки предложения ниже, кажется, что проблема является более фундаментальной, чем просто восклицательный знак.Новый меньший тестовый пример - что-то вроде
awk '{ print $2 }' data.dat | tail -1
, где я предполагаю, что файл не имеет комментариев.Виновниками стали апострофы или то, что я использую канал UNIX в make.
EDIT 2: Половина решения ... Я забыл использовать $$ для $ в make.Надеюсь, это позволит мне опубликовать решение.
РЕДАКТИРОВАТЬ 3: Похоже, способ разбора скобок в make во время определения переменных make, запрещает использование команд, вызванных функцией оболочки, которая их использовала.По сути, это означает, что однострочники gawk не могут быть использованы из make, если кто-то хочет сохранить результаты.