Во-первых, это неправильный синтаксис для функции make; это должно быть $(shell ...)
, а не $shell(...)
.
Во-вторых, я предполагаю, что это действительно появляется внутри рецепта, так как вы используете $@
. Задавая вопросы, пожалуйста, включите достаточно деталей, чтобы мы могли видеть весь контекст, например весь рецепт, а не одну строку.
Это серьезный запрет на использование функции shell
при написании рецепта, потому что каждая строка в рецепте уже выполняется оболочкой. Это просто сбивает с толку и может вызвать много проблем при использовании функции shell
.
В-третьих, вы не хотите экранировать переменную $$(MODULE_LOAD)
, поскольку это заставит оболочку выполнить команду MODULE_LOAD
, которая, вероятно, не существует.
Просто напишите прямо:
echo "module load ABC/$(MODULE_LOAD)" >> $@/_env/local/filexyz