Хороший метод для сравнения времени?

Мне нужно проверить текущее время и прервать скрипт, если это неправильное время суток, которое я должен запустить. Кроме того, если кто-то еще запускает его, он должен прерываться.

Например: мне нужно, чтобы мой скрипт выполнялся только в том случае, если он запущен между 10:00 и 2:00 (4-часовое окно).

В настоящее время я делаю следующее. Принимая время с date +%k%M и сравнивая с жестко закодированными цифрами

 #!/bin/sh currTime=`date +%k%M` check_time_to_run() { tempTime=$1 if [ $tempTime -gt 200 -a $tempTime -lt 2200 ]; then echo "Time is between 2 AM and 10 PM. Aborting." exit 1 else echo "Time is after 10 PM and before 2 AM. Running normally." fi } check_time_to_run $currentTime 

Я хотел бы знать, есть ли какой-либо другой эффективный метод сравнения времени в sh или bash ?

2 Solutions collect form web for “Хороший метод для сравнения времени?”

Это выглядит идеально для меня. Что заставляет вас думать, что это должно быть улучшено?

В любом случае, способы его улучшения могут быть следующими:

  • Используйте меньшую, более быструю оболочку, чем bash, например, тире или pdksh.
  • используйте оболочку с возможностями даты, встроенными в zsh или ksh93
  • используйте gawk (который меньше, чем bash, но не чем тире, но может избежать дополнительной вилки):

Пример:

 #! /usr/bin/gawk -f BEGIN {now = strftime("%k%M")+0; exit(now > 200 && now < 2200)} 

Если доступны внешние инструменты, вы можете проверить dateutils .

Ваш «скрипт» становится:

 if dtest time --gt '02:00:00' && dtest time --lt '22:00:00'; then echo "Time is between 2 AM and 10 PM. Aborting." fi 

Отказ от ответственности: Я автор этого инструмента.

  • Как вы получаете десятичный знак из математической операции с переменной?
  • Ввод каталогов, где имена совпадают в подстроке
  • Как играть простые заметки, такие как звук ding-dang в терминале
  • Чтобы настроить скрипт для отправки электронной почты только тогда, когда команда diff дает разницу
  • оценка команд двойной блокировки в выражении состояния bash
  • Как создать сценарий оболочки для обработки команд типа ls -l / somedir
  • Сценарий для поиска среды рабочего стола по умолчанию?
  • Печать многострочной переменной в столбце
  • вырезание разных слов с вывода
  • Поиск файлов, более новых, чем другой файл в каждом подкаталоге
  • Идиоматический метод bash для запуска необязательного действия без побочных эффектов на код выхода
  • Linux и Unix - лучшая ОС в мире.