首页 > 解决方案 > Bash比较两个日期

问题描述

试图弄清楚如何比较两个日期以确定哪个是主要的,格式是星期几、小时、分钟,分为 3 个变量。

输入具有最大值的示例文本文件

7
23
59

重击

#!/bin/bash
#CHECKTIME

{
   IFS= read -r d
   IFS= read -r h
   IFS= read -r m
} < myFile.txt

echo schedule time:
echo $d
echo $h
echo $m


#GET TIME
IFS=- read -r DAY HOUR MINUTE < <(date +%u-%H-%M)
echo current time:
echo $DAY
echo $HOUR
echo $MINUTE


if [ "$DAY" >= "$d" ] && [ "$HOUR" >= "$h" ]
#if (("$DAY" = "$d"))
then
    echo "do event"

else
        echo "don't do event"
fi

标签: bash

解决方案


将输入文件更改为在数字之间不包含换行符:

$ cat myfile.txt
72359

然后这样做:

$ IFS= read -r foo < myfile.txt
$ bar=$(date '+%u%H%M')
$ if (( foo > bar )); then echo "go foo!"; else echo "go bar!"; fi
go foo!

上面 foo 和 bar 的值(为自己选择更好的名称)是:

$ echo "$foo"
72359
$ echo "$bar"
71918

如果您必须使用换行符将 myfile.txt 保持为当前格式:

$ cat myfile.txt
7
23
59

然后只需将read上面的行更改为:

$ foo=$(tr -d $'\n' < myfile.txt)

并按照我展示的方式保留脚本的其余部分。


推荐阅读