Проверка текущего времени находится между 00:00 — 1:00 по восточному времени, оно должно включать 00.00

#bash #shell #unix

#bash #оболочка #unix

Вопрос:

Мой сценарий:

 currenttime=$(date  %H:%M)
if [[ "$currenttime" > "00:00" ]] amp;amp; [[ "$currenttime" < "01:00" ]]; then
./mailscript1.sh
else
./mailscript2.sh
fi
 

здесь я хотел, чтобы он включал 00:00 и 01:00 и должен вызывать mailscript1 для true, >= и <= не работает

Ответ №1:

Используйте %s (формат эпохи — секунды с 1970-01-01 00:00:00 UTC) для сравнения времени. Это будет отражать время в виде полных чисел, например, 1610621912 и так далее:

 currenttime=$(date  $s)
if [[ "$currenttime" -ge "$(date -d "00:00"  %s)" amp;amp; "$currenttime" -le "$(date -d "01:00"  %s)" ]]
then 
   ./mailscript1.sh
else
   ./mailscript2.sh
fi
 

Поскольку расширение дат будет строковым, используйте -le для меньше или равно и -ge для больше или равно.

Ответ №2:

на данный момент и простое решение для выполнения вышеуказанного требования. текущий date %H date -d ' 1 hour' %H час = Следующий час = текущий момент = date %M

если [[ $currenthour -eq «00» ]] amp;amp; [[ $ Следующий день == «01» ]] amp;amp; [[ $ currentmin -ge 0 amp;amp; $currentmin -le 59 ]];затем./mailscript2.sh остальное ./mailscript1.sh фи