Назад | Перейти на главную страницу

сравнить два сценария оболочки ubuntu

Я работаю над сценарием оболочки, который будет делать некоторые вещи, если текущее время находится между 19:00 и 1:00 утра, поэтому я получаю текущее время следующим образом:

 currenttime=$(date +%H%M%S);

и я конвертирую формат времени начала и окончания следующим образом:

 starttime=$(date -d 19:00 '+%H%M%S');

 endtime=$(date -d 01:00 '+%H%M%S');

поэтому я использую это условие, чтобы проверить, находится ли текущее время между 19 и 1 часами ночи:

num1=$(($starttime-$currenttime))
num2=$(($endtime-$currenttime))


if [ $num1 -lt 0 -a $num2 -gt 0 ];
 then
 echo "the current time is between 19:00 and 01:00 "
 else 
 echo "the current time is not in range  "
  fi

поэтому, если текущее время:

20:00

значение num1 будет:

190000 - 20000 = -1000

и ценность num2 будет:

010000 - 20000 = -10000

поэтому условие не будет применяться, потому что num2 всегда меньше нуля. Пожалуйста помоги. Как я могу провести истинное сравнение?

Возможно, вы берете на себя слишком много сразу, пытаясь объединить оба случая в один тест.

Вы можете решить эту проблему, разделив тест на два случая:

  1. Сейчас между 1900 и полуночью?

  2. Сейчас с полуночи до 01:00?

И, наконец, ваше использование между несколько неоднозначно. Что делать, если время ровно 19:00 или ровно 01:00? Это "между" пределами или нет? Используя различные значения в качестве примера, строгая интерпретация "между" может диктовать, что единственное целое число "между" 1 и 3 равно 2. Их иногда называют "крайними случаями", и ваша проблема, как указано, не полностью определяет, какой результат вы хотите. когда возникает один из этих крайних случаев.