比较两次 ubuntu shell 脚本

比较两次 ubuntu shell 脚本

我正在编写一个 shell 脚本,如果当前时间在 19:00 到凌晨 1:00 之间,它将执行一些操作,因此我通过以下方式获取当前时间:

 currenttime=$(date +%H%M%S);

我将开始时间和结束时间格式转换为如下格式:

 starttime=$(date -d 19:00 '+%H%M%S');

 endtime=$(date -d 01:00 '+%H%M%S');

因此我制定了这个条件来检查当前时间是否在 19 点到凌晨 1 点之间:

num1=$(($starttime-$currenttime))
num2=$(($endtime-$currenttime))


if [ $num1 -lt 0 -a $num2 -gt 0 ];
 then
 echo "the current time is between 19:00 and 01:00 "
 else 
 echo "the current time is not in range  "
  fi

因此如果当前时间是:

20:00

的值num1将是:

190000-20000=-1000

的值num2将是:

010000-20000=-10000

因此该条件不适用,因为num2总是小于零。请帮忙。我该如何进行真正的比较?

答案1

如果您尝试将两种情况合并到单个测试中,则可能会一次性承担太多任务。

您可能会发现将测试分为两种情况来解决这个问题很有帮助:

  1. 时间是在 1900 年至午夜之间吗?

  2. 时间是在午夜到凌晨 01:00 之间吗?

最后,你使用之间有点模棱两可。如果时间恰好是 19:00 或恰好是 01:00,情况会怎样?这是否在“介于”界限之间?以不同的值为例,对“介于”的严格解释可能表明 1 和 3“介于”之间的唯一整数是 2。这些有时被称为“边缘情况”,而您所述的问题并未完全定义当出现这些边缘情况之一时您想要的结果。

相关内容