Linux 将日期从shell脚本传递到查询

Linux 将日期从shell脚本传递到查询,linux,shell,unix,solaris,hive,Linux,Shell,Unix,Solaris,Hive,下面是我运行配置单元查询的shell脚本。在这里,我计算昨天的日期,并在where子句中传递昨天的日期。但这个问题对我不起作用 #!/bin/bash DATE_YEST=`TZ=GMT+48 date +%Y%m%d` echo $DATE_YEST hive -S -e 'SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST' 我像这样运行上面的脚本- sh -x test.sh 我在where子句中传递日期的方式是否

下面是我运行配置单元查询的shell脚本。在这里,我计算昨天的日期,并在where子句中传递昨天的日期。但这个问题对我不起作用

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
hive -S -e 'SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST'
我像这样运行上面的脚本-

sh -x test.sh
我在where子句中传递日期的方式是否有问题?

试试以下方法:

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
echo "SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST"
输出将是:

20120806
SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=20120806
20120806
"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=20120806"
如果您需要在选择框周围加引号,请使用:

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
echo "\"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST\""
输出将是:

20120806
SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=20120806
20120806
"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=20120806"
假设需要引号,脚本将如下所示:

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
hive -S -e "\"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST\""

尝试回显您的select语句。看看它看起来是否正确。“但是这个查询对我不起作用。”-->这是您必须详细说明的部分。您收到了什么错误消息?