Bash сравнить две даты - PullRequest
0 голосов
/ 03 августа 2020

Попытка выяснить, как сравнить две даты, чтобы определить, какая из них важна. Формат - дни недели, час, минута, разделенные на 3 переменные.

7
23
59

ТЕ BASH

#!/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

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Измените входной файл, чтобы не включать символы новой строки между числами:

$ 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)

и оставьте остальную часть скрипта, как я показал.

0 голосов
/ 03 августа 2020

Что-то вроде: это дикая догадка .. Если этот скрипт не может работать до полуночи с чем-то, что нужно запланировать до полуночи, он не может сравнивать дни, равные .. Но если я использую большие или равные для дней, часы и минуты могут не совпадать.

#!/bin/bash
#CHECKTIME

#GET SCHEDULE TIME
{
   IFS= read -r d
   IFS= read -r h
   IFS= read -r m
} < myFile.txt

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

SCHEDULE=$h$m
echo $SCHEDULE

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

TIME=$HOUR$MINUTE
echo $TIME


if [ "$DAY" == "$d" ] && [ "$TIME" -ge "$SCHEDULE" ]

then
    echo "do event"

else
        echo "don't do event"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...