鉴于此Makefile:
ifndef DEIS_NUM_INSTANCES
DEIS_NUM_INSTANCES=3
endif
ifndef DEIS_HOSTS
DEIS_HOSTS = $(shell seq -f "172.17.8.%g" -s " " 100 1 `expr $(DEIS_NUM_INSTANCES) + 99` )
endif
DUMMY:
for host in $(DEIS_HOSTS); do echo $$host; done
无论我导出DEIS_HOSTS
的是什么,始终会评估ifndef DEIS_HOSTS
:
bash-3.2$ export DEIS_HOSTS="1.2.3.4 2.3.4.5"
bash-3.2$ make
for host in 172.17.8.100 172.17.8.101 172.17.8.102 ; do echo $host; done
172.17.8.100
172.17.8.101
172.17.8.102
但是,将变量直接传递给make
似乎有效:
bash-3.2$ DEIS_HOSTS="1.2.3.4 2.3.4.5" make
for host in 1.2.3.4 2.3.4.5; do echo $host; done
1.2.3.4
2.3.4.5
有人可以解释这种行为吗?这很令人困惑,特别是考虑到DEIS_NUM_INSTANCES
不能这样做:
bash-3.2$ export DEIS_NUM_INSTANCES=6
bash-3.2$ make
for host in 172.17.8.100 172.17.8.101 172.17.8.102 172.17.8.103 172.17.8.104 172.17.8.105 ; do echo $host; done
172.17.8.100
172.17.8.101
172.17.8.102
172.17.8.103
172.17.8.104
172.17.8.105
答案 0 :(得分:0)
所以,这很令人尴尬。今天回到这个问题,它按预期工作。我不知道昨天和今天之间发生了什么变化...... Makefile是一样的。无论如何,感谢大家确认我确实疯了!