Bash脚本比较两个日期变量

Xle*_*dos 20 variables bash compare date

我正在尝试将用户给出的日期与文件中的日期进行比较,基本上是列出了大量日期和时间的文本文件.

例如,用户将输入日期,例如2007年8月22日和1:00的时间,我需要脚本做的是计算文本文件中的日期在用户给出的日期之后.

我已经设法通过将文本文件中的每个日期转换为unix时间戳然后比较两者来实现此目的.难道没有办法简单地比较bash中的两个日期吗?

提前致谢

cev*_*ing 19

GNU date命令可以将日期转换为自1970年以来的秒数.尝试此脚本:

#! /bin/bash
DATE=$(date -d "$3-$2-$1 01" '+%s')
COUNT=0
tr '/' ' ' | {
    while read D M Y ; do
    THIS=$(date -d "$Y-$M-$D 01" '+%s')
    if (( THIS > DATE )) ; then
        COUNT=$((COUNT + 1))
    fi
    done
    echo $COUNT
}
Run Code Online (Sandbox Code Playgroud)

它期望三个参数和stdin中的原始日期:

for D in $(seq 19 25) ; do echo $D/08/2007 ; done | ./count.sh 22 08 2007
3
Run Code Online (Sandbox Code Playgroud)

它将工作到2038年.;-)