【发布时间】:2019-07-29 06:42:42
【问题描述】:
我在 Makefile 中有一条规则,它尝试使用 env 变量呈现一些文本,每当我将它传递给 $(shell) 命令时,我总是将这个变量设为空
以下是我试图传递环境变量的 Makefile 我正在使用 sqoop 从运行在 where 语句中定义日期的查询的 sql server 获取数据
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 DATE=20190728 python -m mypackage.render 这样的 env 参数时,我可以看到带有 where convert(varchar,created_at,112) = '20190728' 的查询,但是当我使用 env var 时,我总是得到一个带有像 where convert(varchar,created_at,112) = '' 这样的 env 变量的空字符串
【问题讨论】:
-
请提供您运行的实际命令,以及您“看到”的输出。
-
@Jens 我已经编辑了这个问题,以获得更多关于我的方法以及为什么我在 shell 中使用 cat 的详细信息,还有更好的选择吗?