Получение ошибки "ожидается целочисленное выражение" при сравнении двух целых чисел

# Программа, которая уведомляет пользователя через "уведомление-отправка", когда температура устройства превышает пороговое значение.

#!/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
Другие вопросы по тегам