我在makefile中有一个规则,它试图用env变量呈现一些文本,每当我将这个变量传递给$(shell)命令时,我总是将它设为空
下面是我试图传递env变量的makefile,我使用sqoop从运行where语句中定义了日期的查询的sqlserver获取数据
SHELL := /bin/bash
ifndef DATE
override DATE=$(shell date --date="1 day ago" +%Y%m%d)
endif
test:
sqoop --target-dir /tmp/output/ --fields-terminated-by '\t' --split-by id --query '$(shell cat query.sql | env DATE=$(DATE) python -m mypackage.render)'
我运行命令,比如 make test DATE=20190728
当我传递env参数时 | env DATE=20190728 python -m mypackage.render
然后我就可以用 where convert(varchar,created_at,112) = '20190728'
但是当我使用env var时,我总是得到一个带有env变量的空字符串,比如 where convert(varchar,created_at,112) = ''
1条答案
按热度按时间5lhxktic1#
问题在于
make
$(shell…)调用。您可能需要命令替换(shell特性)。杀一只没用的猫。注意,不建议设置
SHELL
在生成文件中。