Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [Решено] Проверка времени в скрипте  (Прочитано 1115 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ecc83

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
[Решено] Проверка времени в скрипте
« : 15 Сентября 2017, 19:06:54 »
Нужна помощь.

Необходимо при запуске скрипта проверять текущее время, учитывая минуты.
Если текущее время >= 00:30 и <= 06:15, тогда запускается некая команда.
Если текущее время за пределами этого диапазона, то команда не запускается.

Пока у меня получилось только с "целыми" часами. С минутами не получается...
Но эта конструкция не правильно обрабатывает 00 часов  ???

#!/bin/bash

H=$(date +%H)

if [ "$H" -ge "23" -o "$H" -le "06" ]; then
    echo "Старт команды..."
fi

Спасибо.
« Последнее редактирование: 15 Сентября 2017, 20:44:35 от ecc83 »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Проверка времени в скрипте
« Ответ #1 : 15 Сентября 2017, 19:25:28 »
получилось только с "целыми" часами
переводи в минуты/секунды
не правильно обрабатывает
убери кавычки с цифр
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ecc83

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Проверка времени в скрипте
« Ответ #2 : 15 Сентября 2017, 19:36:40 »
переводи в минуты/секунды

Не понял, как это и для чего?


убери кавычки с цифр

Убрал, делаю так:

H=$(date +%H)

if [ "$H" -ge 00 -o "$H" -le 06 ]; then
    echo "Старт команды..."
fi

Команда стартует, хотя сейчас ещё не наступило 00 часов  :-\

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Проверка времени в скрипте
« Ответ #3 : 15 Сентября 2017, 19:50:55 »
Код: (bash) [Выделить]
H=$(date +%-H)
M=$(date +%-M)
DAY_MINUTES=$((H*60+M))

if [ $DAY_MINUTES -ge 30 -a $DAY_MINUTES -le 375 ]
then
echo "Старт команды..."
fi

Оффлайн ecc83

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Проверка времени в скрипте
« Ответ #4 : 15 Сентября 2017, 20:02:33 »
renzrv, понял, как будто работает. Спасибо :)

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Проверка времени в скрипте
« Ответ #5 : 15 Сентября 2017, 20:37:35 »
Почему "как будто"? Если хотите проверить, то укажите сами значения переменных часы, минуты.
Например:
H=0
M=29

Оффлайн ecc83

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Проверка времени в скрипте
« Ответ #6 : 15 Сентября 2017, 20:42:55 »
Почему "как будто"?

Да нет, я не ставлю под сомнение. Просто я хотел проверить, когда наступит временной диапазон.


Если хотите проверить, то укажите сами значения переменных часы, минуты. Например: H=0 M=29

Благодарю, дальше я конечно сам справлюсь.


Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Проверка времени в скрипте
« Ответ #7 : 15 Сентября 2017, 20:51:20 »
можно еще так:
Код: (bash) [Выделить]
DAY_MINS=$(($(date '+%-H*60+%-M')))
     
if [ $DAY_MINS -ge 30 -a $DAY_MINS -le 375 ]
then
    echo "Старт команды..."
fi

Оффлайн ecc83

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: [Решено] Проверка времени в скрипте
« Ответ #8 : 15 Сентября 2017, 21:02:00 »
можно еще так:
Код: (bash) [Выделить]
DAY_MINS=$(($(date '+%-H*60+%-M'))) if [ $DAY_MINS -ge 30 -a $DAY_MINS -le 375 ] then echo "Старт команды..." fi

Ок, и так тоже попробую.

 

Страница сгенерирована за 0.048 секунд. Запросов: 25.