Написание bash кода внутри Makefile требует специальной обработки для всех символов, которые являются специальными для Make. В частности, '$', который должен быть экранирован (удвоен). Также обратите внимание, что ';' требуется перед '}'.
Как правило, при записи фрагмента bash / sh в Makefile ${XYZ}
(или $(XYZ)
) будет ссылаться на переменную MAKE, а $$XYZ
(или * 1006). *) будет ссылаться на переменную sh.
all:
foo() { echo $$1 ; } ; foo "hello"