我最近尝试使用自定义配置安装 conky,我想要一个似乎不存在的功能,或者至少像谷歌告诉我的那样。我写了一个简单的 bash 脚本,它读取 CPU 温度,检查它是高于还是低于旧读数,并输出最高和最低的正确值。问题是,我有时会收到此错误:
/home/ffpp/.conky/temphist.sh: line 25: [:: integer expression expected
if
并且没有温度作为响应。在我将温度与进行比较的几乎每个情况下都会出现错误lm-sensors
,但会随机重复。
这是我写的脚本:
type=$1; #argument import
if [ ! -f /var/tmp/tempmon.var ] #check of existence of old variables
then
hddmin=100
hddmax=0
cpu1min=100
cpu1max=0
cpu2min=100
cpu2max=0
else
. /var/tmp/tempmon.var
fi
case $type in #start of information collection and comparison according to argument
hddmin)
tmp=$(hddtemp /dev/sda -n)
if [ "$tmp" -lt "$hddmin" ]
then
hddmin=$tmp
fi
echo $hddmin
;;
hddmax)
tmp=$(hddtemp /dev/sda -n)
if [ "$tmp" -gt "$hddmax" ]
then
hddmax=$tmp
fi
echo $hddmax
;;
cpu1min)
tmp=$(sensors | grep -oP 'Core\ 0.*?\+\K[0-9.]+' | tr -d . | cut -c-2)
if [ "$tmp" -lt "$cpu1min" ]
then
cpu1min=$tmp
fi
echo $cpu1min
;;
cpu1max)
tmp=$(sensors | grep -oP 'Core\ 0.*?\+\K[0-9.]+' | tr -d . | cut -c-2)
if [ "$tmp" -gt "$cpu1max" ]
then
cpu1max=$tmp
fi
echo $cpu1max
;;
cpu2min)
tmp=$(sensors | grep -oP 'Core\ 1.*?\+\K[0-9.]+' | tr -d . | cut -c-2)
if [ "$tmp" -lt "$cpu2min" ]
then
cpu2min=$tmp
fi
echo $cpu2min
;;
cpu2max)
tmp=$(sensors | grep -oP 'Core\ 1.*?\+\K[0-9.]+' | tr -d . | cut -c-2)
if [ "$tmp" -gt "$cpu2max" ]
then
cpu2max=$tmp
fi
echo $cpu2max
;;
esac
#exported variables to tempmon.var temporary file for future use
echo 'hddmin='"$hddmin"'' > /var/tmp/tempmon.var
echo 'hddmax='"$hddmax"'' >> /var/tmp/tempmon.var
echo 'cpu1min='"$cpu1min"'' >> /var/tmp/tempmon.var
echo 'cpu1max='"$cpu1max"'' >> /var/tmp/tempmon.var
echo 'cpu2min='"$cpu2min"'' >> /var/tmp/tempmon.var
echo 'cpu2max='"$cpu2max"'' >> /var/tmp/tempmon.var
chmod +x /var/tmp/tempmon.var
我尝试在比较中使用(( "$var1">"$var2" ))
而不是,但出现了类似的错误。我该如何解决这个问题?[ "$var1" -gt "$var2" ]
if
调用脚本的方式如下:
bash temphist.sh <temperature to compare>
例如:
bash temphist.sh cpu1min
在这里,我调用脚本返回 cpu1 到目前为止的最低温度。不同类型的比较如下:
hddmin #Minimum HDD temp
hddmax #Maximum HDD temp
cpu1min #Minimum CPU core 1 temp
cpu1max #Maximum CPU core 1 temp
cpu2min #Minimum CPU core 2 temp
cpu2max #Maximum CPU core 2 temp
对于此脚本,需要以下软件包lm-sensors
才能hddtemp
正常工作
答案1
我累了。我认为问题在于我如何保存这些值。似乎,conky 并行调用了这个脚本,有时变量不会被保存。所以我所做的就是将所有 if 拆分成不同的 .sh 文件,然后分别运行它们,并将变量保存到不同的文件中