Во-первых, как правило, я уверен, что вам нужно ЛЮБОЕ использовать переменную ИЛИ дважды запустить команду, чтобы выполнить несколько сравнений для произвольных чисел.Нет такого обозначения, как if [ 1000 -lt $(date '+%H%M') -lt 2000 ];
.
. Кроме того, вам не нужно помещать свои команды в кавычках внутри $ ((...)).Результатом команды backquoted является строка, которая /bin/[
будет интерпретироваться как -gt или -le как число.
if [ `date '+%H%M'` -gt 2245 -a `date '+%H%M'` -lt 2345 ]; then
При этом в качестве опции для времен в вашем примере вы можетепопробуйте использовать более умную date
командную строку.
В FreeBSD:
if [ `date -v-45M '+%H'` -eq 22 ]; then
Или в Linux:
if [ `date -d '45 minutes ago' '+%H'` -eq 22 ]; then