PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit "test" und logischen Operatoren


yandros
03.12.2004, 15:48
Moin!

ich beiße mir an der Geschichte schon seit über einer Stunde die Zähne aus und hoffe das irgend jemand eine Lösung parat hat.

Folgendes Szenario:
Mein Shellscript fordert den Benutzer auf eine Eingabe zu machen. Bei "j" oder "n" soll das Script weiterlaufen; wird eine andere Taste gedrückt soll die Frage erneut gestellt werden: Hier das Codesegment:



while [ $dhcp != "j" || $dhcp != "n" ] ; do
echo -ne "DHCP verwenden ? [j/n] "
read dhcp
done


Das Ergebnis: Die Schleife läuft ewig weiter; auch bei Eingabe von "j" oder "n". Mit folgender Veränderung:


while [ $dhcp != "j" ] ; do


kann ich mit Eingabe eines "j" aus der Schleife springen, also gehe ich davon aus, dass die OR Verkettung nicht funktioniert.

Die Alternative mit regex funktioniert ebenfalls nicht:


while (echo $dhcp | egrep !^(j|n)$) ; do
echo -ne "DHCP verwenden ? [j/n] "
read dhcp
done



Wahscheinlich handelt es sich bei beiden Möglichkeiten nur um ein Syntaxproblem aber ich kann den Fehler nicht entdecken :confused:


Gruß Jens


butterkeks
03.12.2004, 22:24
versuch mal, || durch -o zu ersetzen:

while [ $dhcp != "j" -o $dhcp != "n" ] ; do
# ...

yandros
04.12.2004, 13:36
das hatte ich auch schon probiert. Leider ebenfalls ohne Erfolg...
Laut Manpage von test sollte das aber genauso funktionieren

EXPRESSION1 -o EXPRESSION2
either EXPRESSION1 or EXPRESSION2 is true

yandros
04.12.2004, 14:07
ich habe mich mal wieder selbst überlistet. Natürlich muss ich ein UND anstelle des ODER benutzen :rolleyes:

dann funktionierts auch so wie geplant....