Построчно это работает в терминале, но не в make-файле?

test:
    FOO="MACOS" ; \
    FOO=$${FOO//OS/} ; \
    @echo $FOO

Ожидаемое :

make test
MAC
0
Chris G. 8 Дек 2018 в 18:32

1 ответ

Лучший ответ

Последнее раскрытие оболочки переменной оболочки FOO должно быть экранировано ($$). И если вы хотите подавить эхо рецепта, поместите @ в начало, а не в середину рецепта.

test:
    @FOO="MACOS" ; \
    FOO=$${FOO//OS/} ; \
    echo $$FOO

Обратите внимание, что вы также можете использовать переменные и функции make:

FOO := MACOS
FOO := $(patsubst %OS,%,$(FOO))

test:
    @echo '$(FOO)'
1
Renaud Pacalet 8 Дек 2018 в 17:34