Сравните данную дату с сегодняшней датой в оболочке - PullRequest
0 голосов
/ 25 сентября 2018

Я хотел бы сравнить данную дату

date1 = ср 01 авг 10:03:52 EDT 2018

с

сегодняшней командой "date" в оболочке.

Если указанная дата старше 7 дней от текущей даты, то эхо true

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

В случае стандартного формата date:

date1="Tue Sep 25 11:32:09 EDT 2018"

now=$(date +%s)
cond=$(( $(date -d "$date1" +%s) + 7*24*60*60 ))

if [ $now -ge $cond ]
then
    echo True
fi

В случае нового нераспознанного формата в вопросе (date1=Wed 01 Aug 10:03:52 EDT 2018) вы можете поменять дату и месяц на:

date1="Wed 01 Aug 10:03:52 EDT 2018"
date1=$(echo $date1 | sed -E 's/(Sun|Mon|Tue|Wed|Thu|Fri|Sat).([0-9]{2}).(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/\1 \3 \2/')

Остальное такое же

В случае другого произвольного формата вам придется распутать его с помощью регулярного выражения и преобразовать в что-то, что date сможет распознать.

+%s форматирует вывод в секундах.

-d DATE использует указанную строку даты вместо текущего времени.

sed соответствует регулярному выражению и заменяет его

0 голосов
/ 25 сентября 2018

В GNU date вы можете использовать date -d "$date1" +%s для разбора строки даты и преобразования ее в количество секунд с 1970-01-01 00:00:00 UTC.

Вы можете сравнить это срезультат date +%s, который даст вам текущую дату в том же формате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...