Практически он проверяет, существует ли файл ok.temp. Если это не так, он переходит в цикл сна в течение 2 секунд, прежде чем снова проверять. После того, как файл считается, что он существует, он продолжается.Пока файл существует в bash
К сожалению, я получаю ошибки, указанные ниже следующий код:
#!/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
И я получаю эти ошибки:
Line 43 = в то время как [! -f ok.temp]
line 43: [: f: unary operator expected
линия 52 = если [$ rResult -eq $ rSaved]
line 52: [: too many arguments
Любая помощь будет принята с благодарностью :)
Это линии 43 и 52? (tl; dr) –
Только что отредактировано + добавлено :) – Linky
Пожалуйста, замените, по крайней мере, строки, которые вызвали ошибки. В противном случае кто-то, кто хочет их увидеть, должен щелкнуть ссылку «отредактирован». Ваша проблема и ответы ниже могут помочь кому-то, кто приходит к этому вопросу через поиск. –