Linux 管道ENVSUBT输出到配置单元

Linux 管道ENVSUBT输出到配置单元,linux,bash,hive,Linux,Bash,Hive,使用配置单元0.13.0时,我希望根据模板计算变量,然后立即执行生成的配置单元代码(最好避免使用临时中间文件) 以下是我想做的(非工作)示例: template.hql SELECT COUNT(*) FROM ${TABLE}; 在外壳中: export TABLE=DEFAULT.FOOTABLE envsubst < template.hql | hive export TABLE=DEFAULT.FOOTABLE envsubst

使用配置单元0.13.0时,我希望根据模板计算变量,然后立即执行生成的配置单元代码(最好避免使用临时中间文件)

以下是我想做的(非工作)示例:

template.hql

SELECT COUNT(*) FROM ${TABLE};
在外壳中:

export TABLE=DEFAULT.FOOTABLE
envsubst < template.hql | hive
export TABLE=DEFAULT.FOOTABLE
envsubst

是否有特殊原因导致此项不起作用,以及是否有适当的方法实现此项功能?

替换工作如预期:

$ cat template.hql
SELECT COUNT(*) FROM ${TABLE};
$ export TABLE=DEFAULT.FOOTABLE
$ envsubst < template.hql
SELECT COUNT(*) FROM DEFAULT.FOOTABLE;
如果您使用的是新版本的bash,则可以避免使用中间文件:

hive -f <( envsubst < template.hql )

hive-f可能是因为您的模板有
$TABLE
,而您的环境变量是
$TABLES
(复数)?@bishop,不,对不起,这只是玩具示例中的一个输入错误
hive -f <( envsubst < template.hql )