You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile如何遍历子make返回值调用目标批量获取AWS SSM参数

问题原因

你写的params目标没有正确捕获params-list的执行输出,而是将make params-list当成普通字符串遍历,因此运行失败。

正确实现

方法1:复用现有目标实现

在shell层转义后捕获params-list的输出再遍历即可,加-s参数可以屏蔽make本身的执行日志,输出更干净:

.PHONY: params
params:
	@for param in $$($(MAKE) -s params-list); do \
		$(MAKE) -s params-get PARAM=$${param}; \
	done

关键注意点:

  • Makefile中的$需要转义,写两个$$才会被传递到shell层解析为命令捕获符$()
  • 遍历变量$${param}的双$也是同理,避免被Makefile提前解析变量

方法2:直接合并逻辑(性能更高)

不需要反复调用make子进程,直接把两个步骤的逻辑合并,执行效率更高:

.PHONY: params
params:
	@aws ssm get-parameters-by-path --path /${SERVICE}/${ENV} | jq -c -r '.Parameters[] | .Name' | while read -r param; do \
		aws ssm get-parameter --name "$$param" --with-decryption | jq -c -r .Parameter.Value; \
	done

内容的提问来源于stack exchange,提问作者Javier García

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:54:01