Linux Bash - While read line loop

Moin,

ich bin derzeit mit iBeacons beschäftigt. Ich habe auf einem RaspPi Bluez installiert und ein Script, welches die Beacons (in meinem Fall Schlüsselanhänger) scannt und sofern erreichbar mit die UUID ausgibt (in der Console). Nun will ich ein zweites Script haben, welches den Consolen Output Zeile für Zeile scannt und bei bestimmten Ergebnissen eine Aktion ausführt.
In meinem Fall > Wenn UUID vom Script 1 erkannt und ausgegeben wurde, dann setze setze IPS Wert auf 1, ansonsten setze es auf 0

Mein Script sieht derzeit wie folgt aus

#!/bin/bash

is_beacon_in_range () {
local count=0
while read line && [ "$line" != "" ]
count=$[count + 1]
do
  if [[ `echo $line | grep "XXXXXXXXXXXXXXXXXXXXXXXXXX"` ]]; then
 echo 1
exit
  fi
if [[ $count -eq 1 ]]; then
exit
fi
 done 
echo 0
}

result=$(is_beacon_in_range)
echo $result
if [ $result -eq 1 ];then
echo "ist 1"
 sudo wget -O - -q http://192.168.11.210:3777/hook/ibeacon?Status=1 1>/dev/null &
else
echo "ist nicht 1"
sudo wget -O - -q http://192.168.11.210:3777/hook/ibeacon?Status=0 1>/dev/null &
fi

Wie man sieht suche ich über eine Funktion meine UUID und lasse mir dann Wert 1 oder Wert 0 zurückgeben. Leider funktioniert das Script nicht, wenn keine Ausgabe auf der Console stattfindet. Ich will das Script dann beenden und Wert 0 zurückgeben lassen ergo die UUID wird nicht gefunden.
Wie man sieht, habe ich es über einen Counter, als auch über

while read line && [ "$line" != "" ]

versucht. Doch beides führt nicht zum beenden der while Schleife.
Kann mir einer von euch helfen?
Ps.: Wird die UUID gefunden, beendet sich die Schleife wunderbar durch das „exit“ hier

  if [[ `echo $line | grep "XXXXXXXXXXXXXXXXXXXXXXXXXX"` ]]; then
 echo 1
exit

Vielleicht um es etwas einfach zu beschreiben. Ich scanne mit einem Script nach BLE Dongle. Mit dem angehängtem Script scanne ich nach UUIDs, welche durch das erste Script ausgegeben werden.
Ich will nun das zweite Script direkt beenden, wenn auf der Console nichts ausgegeben wird.
Irgendein EXIT Command, der direkt ausgeführt wird, wenn „while read line“ eines anderen Consolen Outputs (STDOUT) keine Werte enthält, ergo komplett leer ist.

Zwei Dinge sind mir aufgefallen:

  1. „read“ wartet ohne Zusatzparameter unendlich auf eine Eingabe.Keine Werte sind keine Eingabe, also Warten.
  2. Zwischen while (Bedingung) und do darf keine andere Anweisung stehen (hier steht count=…)

Tommi

ok, das mit dem count kann ich löschen. Waas wäre der Zusatzparameter für read, damit es nicht unendlich wartet?

EDIT: Das war das STICHWORT :smiley:
Einfach mit Timeouts arbeiten und ich komme einen Schritt weiter! TOP Danke tommi