Oder Bedingung in UNTIL Loop

S

Schwabinger

Grünschnabel
Hallo allerseits,

mit der folgenden Anweisung führe ich ein Schleife aus, die so lange läuft, bis ich über die serielle Schnittstelle einen Input "tuner:" bekomme, der am Anfang der empfangenen Zeile steht:

Code:
     until inputline=$(echo $inputline | grep -e "^tuner:")
   do
    inputline=$(/usr/bin/head -n 1 < /dev/ttyS0)
   done

Ich will die Anweisung so erweitert, dass die Bedingung auch dann erfüllt ist, wenn entweder "tuner:" oder "volume:" am Zeilenanfang steht.

Vielen Dank für Eure Hilfe,

Schwabinger
 
Abend,

versuchs mal so
Code:
grep -e "^tuner:\|^volume:"

mfg
HeadCrash
 
Hallo HeadCrash,

hat bestens geklappt.

Und jetzt stehe ich vor dem Problem, dass ich den Wert von Inputline unterschiedlich verarbeiten will, je nachdem, ob "tuner:" oder "volume:" drinsteht:
Nach meinem Verständnis müsste das folgende den Inhalt von Inputline dann nehmen, wenn dort "tuner:" an der ersten Stelle steht. Beginnt Inputline mit ""volume:", müsste if übersprungen werden:


Code:
if [ echo $inputline | grep -e "^tuner:" ]; then

VALUE=$(echo $inputline | /bin/sed 's/tuner://') # Entfernt Text
VALUE=$(echo $VALUE | /usr/bin/dos2unix) # entfernt Schmierzeichen
echo "vALue: " $VALUE
fi
Tut es aber nicht. Was mache ich falsch?
 
Ohne die Klammern funktioniert es:
Code:
if echo $inputline | grep -i "tuner"
then
Nochmal danke für die hilfe,

Schwabinger
 

Ähnliche Themen

continue in Schleife einbauen

bash: Fehlermeldung und Werte in Array sortieren?

shell skript in perl

ordner auf änderungen überwachen

Java Development Kit Installation

Zurück
Oben