Просто проверьте, находится ли текущий час дня между 8 и 5 - поскольку вы используете круглые числа, вам даже не нужно копаться с минутами:
hour=$(date +%H)
if [ "$hour" -lt 17 -a "$hour" -ge 8 ]; then
# do stuff
fi
Конечно, это верно в 8:00:00, но неверно в 5:00:00; надеюсь, это не имеет большого значения.
Для более сложных временных диапазонов более простым подходом может быть преобразование обратно в unix-время, где вы можете более легко сравнивать:
begin=$(date --date="8:00" +%s)
end=$(date --date="17:00" +%s)
now=$(date +%s)
# if you want to use a given time instead of the current time, use
# $(date --date=$some_time +%s)
if [ "$begin" -le "$now" -a "$now" -le "$end" ]; then
# do stuff
fi
Конечно, я сделал ошибку, ответив на вопрос в том виде, в котором он был задан. Как предполагает Симус, вы можете просто использовать задание cron - оно может запустить службу в 8 и выключить ее в 5, или просто запустить в ожидаемое время между.