【问题标题】:Shell Script If Statement to compare dates用于比较日期的 Shell 脚本 If 语句
【发布时间】:2020-06-29 20:14:36
【问题描述】:

我目前正在编写一个 shell 脚本来运行我的一些配置单元查询。在运行它之前,我需要检查表中的最后一个日期。我想检查日期并将其作为结果传递,然后将其与我的日期变量进行比较。我这样做是作为一个 if 语句,所以如果日期是昨天,那么它应该运行 hive 查询。如果不是(这意味着日期较旧且数据尚未刷新),我只是希望它向我发送一封电子邮件告诉我。除了如何比较日期之外,我已经弄清楚了所有的逻辑。我尝试对 = 或 -gt、-lt 等进行重新保护的每一件事。我总是得到 THEN 语句,它不会检查第一个比较是否匹配。下面是我使用的代码。我有 then 声明,甚至告诉我它找到的日期。所以即使是电子邮件也会说 VAL1 = 2020-06-26,昨天是 2020-06-26(我将它设置为选择这个日期,因为这是我正在测试的日期。所以输出告诉我日期是相同的,但 IF 语句并未将它们标记为真。

这是我的查询:

#!/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 查询变量的输出。第二个是今天的变量,第三个日期是 $yesterday 即使输出都显示答案是 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"

【问题讨论】:

  • 您在一个日期中使用- 作为分隔符,在另一个日期中使用_ 作为分隔符。使用一致的分隔符。
  • $today 在输出中有_
  • 我很惊讶您在使用-eq 比较非整数时没有收到错误...?你试过[ "${result}" = "${yesterday}" ] 吗?
  • set -x 放在脚本的开头。这将在执行时显示所有语句以及变量值,以便您查看发生了什么。
  • @Sotark -eq 用于比较整数; 2020-06-26 不是整数,因此您会收到此错误;尝试用=替换-eq

标签: bash shell date hive


【解决方案1】:

看起来 hive 是查询返回的不仅仅是日期。我假设它正在返回日志数据。

hive_result=`hive -S -e "set hive.cli.print.header=false; select max(asgn_dt) from acorn_data.katie_rr;"

一旦您拥有hive_result,然后尝试根据分隔符进行拆分。

result=$(echo $hive_result| cut -d'_' -f 1)

接下来尝试比较两个结果,如下所示:

if [[ $result -eq $yesterday ]]
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多