Я работаю над сценарием оболочки, который будет делать некоторые вещи, если текущее время находится между 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
всегда меньше нуля. Пожалуйста помоги. Как я могу провести истинное сравнение?
Возможно, вы берете на себя слишком много сразу, пытаясь объединить оба случая в один тест.
Вы можете решить эту проблему, разделив тест на два случая:
Сейчас между 1900 и полуночью?
Сейчас с полуночи до 01:00?
И, наконец, ваше использование между несколько неоднозначно. Что делать, если время ровно 19:00 или ровно 01:00? Это "между" пределами или нет? Используя различные значения в качестве примера, строгая интерпретация "между" может диктовать, что единственное целое число "между" 1 и 3 равно 2. Их иногда называют "крайними случаями", и ваша проблема, как указано, не полностью определяет, какой результат вы хотите. когда возникает один из этих крайних случаев.