如何确保执行GNU Make命令时必须传入ENV参数?
解决Makefile中强制要求传入ENV参数的问题
问题需求
执行make destroy命令时必须显式传入ENV参数(例如make destroy ENV=test),未传入时直接抛出错误;同时保留销毁前的确认提示(除非传入FORCE参数跳过确认)。
现有代码的问题
原代码中ENV ?=prod给ENV设置了默认值prod,导致ifndef ENV的判断永远不会触发,完全无法达到强制传参的目的。
修正后的代码
ifndef ENV $(error ENV参数未定义,请在命令中传入ENV参数,例如:make destroy ENV=test) endif ifndef FORCE @/bin/echo -n "确定要销毁${ENV}环境的配置吗?[y/N] " && read ans && [ $${ans:-N} = y ] endif terraform destroy ${ARGS}
代码说明
- 第一部分:通过
ifndef ENV检查是否传入了ENV参数,未传入则直接抛出错误并终止执行。 - 第二部分:如果没有传入
FORCE参数,会弹出交互式确认提示,只有用户输入y才会继续执行销毁操作。 - 最后执行
terraform destroy命令,同时支持传入自定义的ARGS参数扩展功能。
内容的提问来源于stack exchange,提问作者Alfred Hitchkock
相关产品推荐
相关产品推荐

