0
我正在尝试编写make目标,它设置了env。由shell命令获得的变量。Makefile:设置命令输出的环境变量
gcloud beta emulators datastore env-init命令在终端输出很少的导出语句像(不设置,但只是回声/打印)。
export DATASTORE_EMULATOR_HOST=localhost:8432
export DATASTORE_PROJECT_ID=my-project-id
通常,我必须将这些行复制并粘贴到终端中以设置变量。
是否可以使这些打印的export语句执行,以便它们将在shell中设置。我尝试过,但没有奏效。
target:
@export JAVA_HOME=$(JAVA_HOME); \
$(shell gcloud beta emulators datastore env-init); \
go run src/main.go
它打印出的脚本输出,如果我不喜欢,
target:
export JAVA_HOME=$(JAVA_HOME); \
gcloud beta emulators datastore env-init \
go run src/main.go
到JAVA_HOME
类似,哪能还gcloud beta emulators datastore env-init
命令(其是4线出口的命令)的源极输出,使他们在环境中设置。
,所以我想是这样,实际上,
target:
export JAVA_HOME=$(JAVA_HOME); \
export DATASTORE_EMULATOR_HOST=localhost:8432 \
export DATASTORE_PROJECT_ID=my-project-id \
go run src/main.go
感谢。 bsr
所以我试过了,'''target: @export JAVA_HOME = $(JAVA_HOME); \ gcloud beta模拟器数据存储env-init \ 运行src/main.go'''但仍然是env。未设置'gcloud'命令打印的变量。 – bsr
对不起,我可能听错了。稍作编辑以澄清问题。它不是跟踪,而是设置(导出)由命令打印的变量(gcloud beta ...)。所以这个命令的输出是2个输出状态(只输出到控制台,但没有设置)。我想设置这些变量,然后在下一行(同一个shell)上启动一个命令。我不介意将它设置为makefile级别,但该env变量仅在执行目标之前可用。是否可以在执行目标之前对命令进行评估。谢谢您的帮助。 – bsr
非常感谢你。我最初没有看到你的编辑:-),它效果很好。感谢你的宝贵时间。 – bsr