ファイル「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行目 = while [ ! –f OK.temp ]
line 43: [: f: unary operator expected
52 行目 = [ $rResult -eq $rSaved ] の場合
line 52: [: too many arguments
どんな助けでも大歓迎です:)