Makefile缺少分隔符。停止。评估和变量错误

时间:2019-03-27 15:46:31

标签: makefile

这不是空间。标签问题。

我正在编写一些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...

再次,我可以向您保证,我在Makefile中使用TABS而不是SPACES。我已经检查并再次检查。但是,当我运行make apply-rnd时,它成功运行了init-rnd目标,成功运行了plan-rnd目标,但是随后在该目标的第一行显示以下消息:

  

Makefile:15:***缺少分隔符。停止。

我假设它与管道有关?还是使用变量?

无论如何,当我在Bash中手动运行它们时,这些命令仍然有效...我只需要在此Makefile中使它们在这里运行即可。

1 个答案:

答案 0 :(得分:0)

您为什么在这里全部使用evaleval函数用于评估 makefiles 。您正在尝试将其传递给非makefile语法的shell命令,因此会出错。

只需在shell中运行命令:删除eval函数即可。