获得错误'期望的整数表达',同时比较两个整数

时间:2013-09-12 09:36:45

标签: bash if-statement notifications type-conversion pandaboard

#Program,当设备温度超过阈值时,通过'notify-send'通知用户。

#!/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 的数据类型,它正在通过Device读取数据,我如何比较整数,我试过if [ [$Temp > 42000] ]没有用。

1 个答案:

答案 0 :(得分: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