这不是空间。标签问题。
我正在编写一些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中使它们在这里运行即可。
答案 0 :(得分:0)
您为什么在这里全部使用eval
? eval
函数用于评估 makefiles 。您正在尝试将其传递给非makefile语法的shell命令,因此会出错。
只需在shell中运行命令:删除eval
函数即可。