В Makefile отсутствует разделитель. Стоп. ошибка с eval и переменными - PullRequest
0 голосов
/ 27 марта 2019

ЭТО НЕ ПРОСТРАНСТВО ПРОТИВ.TABS ISSUE.

Я пишу несколько целей Make для последовательного запуска Terraform и Helm, и мне нужно захватить часть выходных данных Terraform, чтобы перейти к следующей цели Helm.Это то, что у меня так далеко:

TF        := terraform
RND_ENV   := deployment/envs/rnd
RND_PLAN  := tfplan-rnd.out
RND_APPLY := tfapply-rnd.out

.PHONY: init-rnd plan-rnd apply-rnd deploy-rnd

init-rnd:
    @$(TF) init $(RND_ENV)

plan-rnd: init-rnd
    @$(TF) plan -out=$(RND_PLAN) $(RND_ENV)

apply-rnd: plan-rnd
    $(TF) apply -no-color $(RND_PLAN) | tee $(RND_APPLY)
    $(shell grep my_output_var $(RND_APPLY) | awk '{print $$3}' > .my_output_var)
    @rm $(RND_APPLY)

# ...further steps omitted...

Еще раз, я могу заверить вас, что я использую TABS вместо SPACES в моем Makefile.Я проверил и перепроверил.Однако, когда я запускаю make apply-rnd, он успешно запускает цель init-rnd, успешно запускает цель plan-rnd, но затем разбивает первую строку этой цели со следующим сообщением:

Makefile: 15: *** отсутствует разделитель.Стоп.

Я полагаю, это как-то связано с трубкой?Или, возможно, использование переменных?

В любом случае, эти же команды работают, когда я запускаю их вручную в Bash ... Мне просто нужно, чтобы они работали здесь, в этом файле Makefile.

1 Ответ

0 голосов
/ 27 марта 2019

Почему вы вообще используете eval здесь?Функция eval предназначена для оценки makefiles .Вы пытаетесь передать ему команды оболочки, которые не имеют синтаксиса makefile, поэтому вы получаете ошибки.

Просто запустите команды в оболочке: удалите функцию eval.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...