Получение ошибки "ожидается целочисленное выражение" при сравнении двух целых чисел
# Программа, которая уведомляет пользователя через "уведомление-отправка", когда температура устройства превышает пороговое значение.
#!/bin/bash
Temp=adb shell cat /sys/devices/platform/omap/omap_temp_sensor.0/temperature
if [ $Temp -gt 42000 ]
then
notify-send Temperature "$Temp " -i /usr/share/pixmaps/idle.xpm
cvlc /home/Xme/Desktop/Beep-263732.mp3
else
echo "Exit"
fi
Получение ошибки как
: integer expression expected
Я не получаю тип данных $Temp, который читает данные по устройству, и как я могу сравнить целые числа, я пытался if [ [$Temp > 42000] ]
не работал.
1 ответ
Решение
Как мы сказали в комментариях, это решило проблему:
Temp=$(adb shell cat /sys/devices/platform/omap/omap_temp_sensor.0/temperature) | grep -o "[0-9]*")
Прежде всего, вы не выбирали номер правильно. Обратите внимание, что вам нужно использовать
Temp=$(command)
Пока вы использовали
Temp=command
Затем мы увидели, что ваш ввод не был целочисленным. Я предполагаю, что должны быть какие-то конечные символы. Чтобы удалить их, я предлагаю использовать grep -o "[0-9]*"
, который просто совпадает с числами в данной строке. Примеры:
$ echo "23 " | grep -o "[0-9]*"
23
$ echo "as23.22" | grep -o "[0-9]*"
23
22
$ echo "23" | grep -o "[0-9]*"
23