Bash 具有不应硬编码但应在规则调用时作为参数传递的参数
有一个makefile,其中规则Bash 具有不应硬编码但应在规则调用时作为参数传递的参数,bash,makefile,Bash,Makefile,有一个makefile,其中规则dev create empty migration,当前,此规则具有硬编码参数accounts\u table,此参数不应硬编码,但应在规则调用时作为参数传递。EG使开发人员创建空迁移帐户\u表 有什么办法吗 .PHONY: dev-create-empty-migration dev-create-empty-migration: migrate create -ext sql -dir ./pkg/acc/repo/postgres/migratio
dev create empty migration
,当前,此规则具有硬编码参数accounts\u table
,此参数不应硬编码,但应在规则调用时作为参数传递。EG使开发人员创建空迁移帐户\u表
有什么办法吗
.PHONY: dev-create-empty-migration
dev-create-empty-migration:
migrate create -ext sql -dir
./pkg/acc/repo/postgres/migrations accounts_table
您应该使用一个变量并在其中存储一些内容。通过使用
?=
,首先搜索参数。如果找到,则使用参数,否则使用默认内容
$ cat Makefile
VAR ?= derp
test:
@echo $(VAR)
$ make
derp
$ make VAR=lala
lala
仅仅因为它很有趣,你也可以做如下的事情。这省略了使用额外的参数,但是您当然可以进行一些混合
$ cat Makefile
VAR := None
dev-create-empty-migration-%_table:
$(eval VAR=$(patsubst dev-create-empty-migration-%,%,$@))
@echo $(VAR)
$ make dev-create-empty-migration-derp_table
derp_table
检查,它可能会解决您的问题