【发布时间】:2012-05-24 11:02:25
【问题描述】:
它几乎检查文件'ok.temp'是否存在。如果不是,它会在再次检查之前进入睡眠循环 2 秒。在文件被认为存在后,它会继续。
不幸的是,我收到以下代码中所述的错误:
#!/bin/sh
# Read the sensor values
if [ ! -f saved.txt ]
then
touch saved.txt
fi
#saved values count
sCount=0
#value aggregates
vTTemp=0
vTHumid=0
vTLux=0
#previous aggregates
pTTemp=0
pTHumid=0
pTLux=0
while :
do
vTemp=0
vHumid=0
vLux=0
if [ $sCount -gt 0 ]
then
if [ $(( $sCount % 5 )) -eq 0 ]
then
#set previous aggregates as current
pTTemp=$vTTemp
pTHumid=$vTHumid
pTLux=$vTLux
#reset current aggregates
vTTemp=0
vTHumid=0
vTLux=0
fi
fi
while [ ! –f ok.temp ]
do
sleep 20
done
if [ -f logfile.txt ]
then
rResult=`tail -1 logfile.txt`
rSaved=`tail -1 saved.txt`
if [ $rResult -eq $rSaved ]
then
vTemp=`echo $rResult | cut -d" " -f1`
vHumid=`echo $rResult | cut -d" " -f2`
vLux=`echo $rResult | cut -d" " -f3`
echo $rResult >> saved.txt
# aggregate results
vTTemp=`expr $vTTemp + $vTemp`
vTHumid=`expr $vTHumid + $vHumid`
vTLux=`expr $vTLux + $vLux`
echo 'Most recent results recieved from sensor has been saved'
else
echo 'Most recent result has already been saved, skipping'
fi
fi
echo '[Previous] Temp:'$pTTemp' Humid:'$pTHumid' Lux:'$pTLux
echo '[Current] Temp:'$vTTemp' Humid:'$vTHumid' Lux:'$vTLux
sCount=`expr $sCount + 1`
done
我收到这些错误:
第 43 行 = 而 [ ! -f ok.temp ]
line 43: [: f: unary operator expected
第 52 行 = if [ $rResult -eq $rSaved ]
line 52: [: too many arguments
任何帮助将不胜感激:)
【问题讨论】:
-
第 43 行和第 52 行是什么? (tl;博士)
-
请至少替换导致错误的行。否则,想要查看它们的人必须单击“已编辑”链接。您的问题和下面的答案可能会使通过搜索找到此问题的其他人受益。
标签: file shell while-loop exists