If statement makefile:基于布尔环境变量切换变量值
我有一个设置为true或false的env-var集成 我想根据INTEGRATION设置为true还是false来设置变量的值 我试过:If statement makefile:基于布尔环境变量切换变量值,if-statement,makefile,boolean,If Statement,Makefile,Boolean,我有一个设置为true或false的env-var集成 我想根据INTEGRATION设置为true还是false来设置变量的值 我试过: ifeq ($(INTEGRATION),false) PRODUCTION_URL="production" else PRODUCTION_URL="integration" endif 而且 if [ ${SNOOTY_INTEGRATION} == false ]; then \ echo
ifeq ($(INTEGRATION),false)
PRODUCTION_URL="production"
else
PRODUCTION_URL="integration"
endif
而且
if [ ${SNOOTY_INTEGRATION} == false ]; then \
echo "HIT THE TRUTH"; \
PRODUCTION_URL="https://docs.mongodb.com"; \
fi
跑步后
export INTEGRATION=true
make help
在终端中,我运行makehelp
:
help:
echo "prod url ${PRODUCTION_URL}";
在第一种情况下,它打印
prod url integration
,在第二种情况下,它打印prod url
——当需要打印时,prod url production
运行env integration=true
是错误的
这不会在当前shell中设置环境变量:它只在env
命令中设置该环境变量
您可以使用:
$ export INTEGRATION=true
$ make help
(在shell中设置变量,以便所有后续命令都可以看到它,直到再次取消导出为止),或者可以使用:
$ env INTEGRATION=true make help
本质上与(更常见和更短的)相同:
(仅为此调用make
设置变量)
但你不能使用:
$ env INTEGRATION=true
$ make help
ETA
如果这不起作用,那么你的环境中肯定还有一些你没有解释的东西。请提供一个完整的自包含示例来说明问题。例如,我不知道您在问题中显示的shell if语句是为了什么,也不知道它与您的问题的其余部分有什么关系。这对我很有用:
$ cat Makefile
ifeq ($(INTEGRATION),false)
PRODUCTION_URL="production"
else
PRODUCTION_URL="integration"
endif
help:
echo "prod url ${PRODUCTION_URL}";
$ make help
echo "prod url "integration"";
prod url integration
$ export INTEGRATION=true
$ make help
echo "prod url "integration"";
prod url integration
$ export INTEGRATION=false
$ make help
echo "prod url "production"";
prod url production
运行
env INTEGRATION=true
是错误的
这不会在当前shell中设置环境变量:它只在env
命令中设置该环境变量
您可以使用:
$ export INTEGRATION=true
$ make help
(在shell中设置变量,以便所有后续命令都可以看到它,直到再次取消导出为止),或者可以使用:
$ env INTEGRATION=true make help
本质上与(更常见和更短的)相同:
(仅为此调用make
设置变量)
但你不能使用:
$ env INTEGRATION=true
$ make help
ETA
如果这不起作用,那么你的环境中肯定还有一些你没有解释的东西。请提供一个完整的自包含示例来说明问题。例如,我不知道您在问题中显示的shell if语句是为了什么,也不知道它与您的问题的其余部分有什么关系。这对我很有用:
$ cat Makefile
ifeq ($(INTEGRATION),false)
PRODUCTION_URL="production"
else
PRODUCTION_URL="integration"
endif
help:
echo "prod url ${PRODUCTION_URL}";
$ make help
echo "prod url "integration"";
prod url integration
$ export INTEGRATION=true
$ make help
echo "prod url "integration"";
prod url integration
$ export INTEGRATION=false
$ make help
echo "prod url "production"";
prod url production
谢谢你的重要提示!我仍然没有得到想要的行为-设置
export INTEGRATION=false
,然后运行make help
生成echo“产品url代码>您确定没有键入错误的变量名称吗?该值不可能为空,因为if语句会将其设置为一个值或另一个值。所以我只能建议您输入了一个变量名,另外请注意,您确实不希望在makefile变量赋值中包含引号。引号并不特别,所以这些变量的值实际上也包含引号,这可能不是您想要的。谢谢您的重要提示!我仍然没有得到想要的行为-设置export INTEGRATION=false
,然后运行make help
生成echo“产品url代码>您确定没有键入错误的变量名称吗?该值不可能为空,因为if语句会将其设置为一个值或另一个值。所以我只能建议您输入了一个变量名,另外请注意,您确实不希望在makefile变量赋值中包含引号。引号并不特别,所以这些变量的值实际上也包含引号,这可能不是您想要的。