Так что я не уверен, почему он это делает. Мой оператор if продолжает интерпретировать вторую переменную как буквенную строку вместо переменной. Ниже мой точный код.
lights() {
bulb1state=$(gatttool -b D8:6F:4B:09:AC:E6 --char-read -a 0x001b)
echo $bulb1state
bulb2state=$(gatttool -b DA:5A:4B:09:AC:E6 --char-read -a 0x001b)
bulb3state=$(gatttool -b AC:E6:4B:07:39:E9 --char-read -a 0x0018)
bulb4state=$(gatttool -b AC:E6:4B:08:40:50 --char-read -a 0x0018)
offstate="Characteristic value/descriptor: 00 00 00 00"
echo $bulb1state
echo $offstate
if [ "$offstate" = "$bulb1state" ]; then
echo $bulb1state
echo "bulb1 state = off"
gatttool -b D8:6F:4B:09:AC:E6 --char-write -a 0x001b -n ff000000
gatttool -b DA:5A:4B:09:AC:E6 --char-write -a 0x001b -n ff000000
gatttool -b AC:E6:4B:07:39:E9 --char-write -a 0x0018 -n ff000000
gatttool -b AC:E6:4B:08:40:50 --char-write -a 0x0018 -n ff000000
fi
}
Мой вывод:
>lights
Characteristic value/descriptor: 00 00 00 00
Characteristic value/descriptor: 00 00 00 00
Characteristic value/descriptor: 00 00 00 00
Я не понимаю, почему последние 2 эхо-заявления не отображаются.
Изменить: на луковице было пустое пространство. Это достаточно хорошо для меня, чтобы найти обходной путь, но мне все еще любопытно, почему второй термин оператора if интерпретировался как буквальная строка, когда я использовал оператор "=", а не оператор "-eq" , Также не имело значения, какая переменная была первой или второй.