我目前正在编写一个shell脚本来运行一些配置单元查询。在我运行它之前,我需要检查表中的最后一个日期。我想检查日期并将其作为结果传递,然后将其与日期变量进行比较。我是作为if语句来执行的,所以如果日期是昨天,那么它应该运行配置单元查询。如果没有(这意味着日期是旧的,数据还没有刷新)我只想它给我发一封电子邮件告诉我这样做。除了如何比较日期之外,我已经搞清楚了所有的逻辑。我每次尝试使用reguards to=or-gt,-lt等。我总是得到then语句,它不会检查第一个比较是否匹配。下面是我使用的代码。我有then语句,甚至告诉我它找到了什么日期。所以即使是电子邮件也会说val1=2020-06-26,昨天是2020-06-26(我把它设置为选择这个日期,因为这是我测试的对象)。所以输出告诉我日期是相同的,但是if语句没有将它们标记为true。
我的问题是:
# !/bin/bash
yesterday=`date -d "$date -3 days" +"%Y_%m_%d"`;
today=`date '+%Y_%m_%d'`;
cd /idn/home/chalse/AutoJobs
result=`hive -e "set hive.cli.print.header=false;select max(asgn_dt) from acorn_data.katie_rr;"`
if [ $result -eq $yesterday ]
then
echo "Hi Katie,
The last update for Reserve & Reactivation was $result .
Yesterday is $yesterday
Thanks,
CJ" | mailx -s "Reserve Reactivation Report $yesterday" - name@email.com
else
echo "Hi KAtie,
The last update for Commission File was $result. We even checked $today but we did not check $yesterday
Thanks,
CJ" | mailx -s "Reserve Reactivation Report $today" - name@email.com
fi
我得到这个作为我的电子邮件显示then语句,第一个日期代表select hive查询变量的输出。第二个日期是今天可变的,第三个日期是昨天的美元,尽管两个结果都显示答案是2020-06-26,但if语句不认为它们是匹配的。
"Hi KAtie,
The last update for Commission File was 2020-06-26($result). We even checked 2020_06_29($today) but we did not check 2020-06-26($yesterday)
Thanks,
CJ"
1条答案
按热度按时间of1yzvn41#
看起来hive查询返回的不仅仅是日期。我假设它正在返回日志数据。
一旦你有了
hive_result
然后尝试根据分隔符进行拆分。下一步尝试比较两个结果,如下所示: