У вас две проблемы
- Вы не присваиваете своим переменным
$
, когда назначаете их, только когда вы расширяете их
- Вам необходимо установить приоритет оператора с помощью паренов
( )
Кроме того, поскольку вы уже используете bash
, он может также использовать его лучший синтаксис с конструкцией (( ))
, которая позволяет вам использовать операторы сравнения < > == !=
, и вы можете использовать $()
для подстановки команд вместо спины / надгробия
#!/bin/bash
local_time=$(( 10#$( date +'%H%M' ) ))
if (( ( local_time >= 1430 && local_time <= 2230 ) ||
( local_time >= 10#0300 && local_time <= 10#0400 ) ))
then
echo 'pass'
else
echo 'skip'
fi
Числа, начинающиеся с нуля, интерпретируются как восьмеричные.
Кроме того, любое число, начинающееся с 0 и содержащее 8 или 9, выдает ошибку.
Префикс (10 #) решает это.