休止状態スクリプトの一部

休止状態スクリプトの一部

elif部分を一時停止/休止したいのですが、他のelif部分は正常に機能したままにしたいと思います。 1つのセンサーがオフになると、スクリプト全体がスリープ状態になることは望ましくありません。

#!/bin/sh

while true;  do
    valid=""


    scan=`./script`

    if [ "$scan" = "$valid" ]; then
        echo "Good value"

    else
        echo "Bad value"

    fi

    sleep 5
done

exit

したがって、1つのセンサーがトリガーされると、その1つのセンサーにプッシュ通知を送信する前に数秒待ちますが、1つのセンサーが遅延しても他のセンサーからの通知の送信は中断されません。

センサーがオフになるたびに通知を受けたくないので、通知が送信され続けないように遅延が必要です。

ベストアンサー1

#!/bin/bash
#again you must use bash... 
valid[0]=160650648 ; valid[1]=163686025
valid[2]=120806542 ; valid[3]=37206841
i=0

while sleep 5;  do
    scan=$(./RFSniffer)
    if [ "$scan" == "$oldscan" ]; then
    i=$((i+1))
    #if i is minor than 10 restart loop...
    #So a alert will not be displayed again after 50 seconds...
        if [ "$i" -lt "10" ]; then
            continue
        else 
            i=0
        fi
    fi

    case $scan in 
           ${valid[0]})
               echo "Good Read"
               echo "Your code is " $scan
               ./buzzer.sh &
               omxplayer -o local sleighbells.mp3
               curl -u "code": https://api.pushbullet.com/v2/pushes -d type=note -d title="Alert" -d body="DoorBell" &
            ;; 
            ${valid[1]})
                curl -u "code": https://api.pushbullet.com/v2/pushes -d type=note -d title="Alert" -d body="front sensor" &
            ;;
            ${valid[2]})
                curl -u "code": https://api.pushbullet.com/v2/pushes -d type=note -d title="Alert" -d body="Back door sensor" &
            ;;
            ${valid[3]})
                curl -u "code": https://api.pushbullet.com/v2/pushes -d type=note -d title="Alert" -d body="Second sensor" &
            ;;
            *)
               echo "BAD READ:  your code and the valid don't match"
               echo "Your correct valid code should be " $scan
            ;;
    esac

    oldscan=$scan
    scan=''
    #sleep 5 not needed sleep 5 is in while condition 

done

編集:コメントを参照してください。

おすすめ記事