Variablen Wert vergleichen

cat1510

Well-Known Member
Hi Leutz,

ich stehe gerade auf dem Schlauch.
Eigentlich eine ganz einfache Aufgabe.
3 Variablen, mit einem Wert, die verglichen werden sollen.

Wenn Wert1 oder Wert2 oder Wert3 = 0 ist dann soll das und das passieren.
Was brauch ich dafuer?

if?
case?
for?

Hat jemand einen Tip?


CAT
 
Jo Danke,

habe nicht gedacht, dass das so leicht ist.
In der Bourne Shell wollte ich das Schreiben.


Vielen Dank fuer die prompte Antwort.

Also unter sh geht das so leider irgendwie nicht.

Code:
if [ $PING1==0 || $PING2==0 || $PING3==0 ]
        then
           echo Eine Seite ist errechbar
fi

exit

+ [ 0==0
[: missing ]
+ 0==0
0==0: not found
+ 0==0 ]
0==0: not found
+ exit

das zeigt er mir an.


CAT
 
Zuletzt bearbeitet:
"||" ist ein Boolsches Oder welches von der Shell interpretiert wird. In diesem Beispiel foo || echo bar wird "bar" ausgegeben wenn der Return Wert von foo ungelich 0 ist. Deswegen muss man hier -o verwenden.
 
Soo hier mal das ganze Script:

Code:
#!/bin/sh
#               Copyright by BYTEWORKER ;-)
#               for more information contact cat@byteworker.com
set -x

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin

ping -o -c 1 yahoo.de
PING1=$?

ping -o -c 1 heise.de
PING2=$?

ping -o -c 1 byteworker.com
PING3=$?


echo $PING1
echo $PING2
echo $PING3

if [ "$PING1" = "0" -o "$PING2" = "0" -o "$PING3" = "0" ]
        then
           echo Eine Seite ist erreichbar
        else echo Keine Seite ist erreichbar
fi

exit


@Mr. Fixit
man manpage 1?!?! Habe ich nicht...
*g bestimmt soll ich nun man man lesen oder?

Zur Erklaerung:

Das script soll pruefen, ob eine Online Verbindung besteht.
PPP stuerzt regelmaessig ab, wenn die Telekom wieder mal ein bisschen umbaut.
Das Script soll halt pruefen ob online und dann neueinwaehlen.
Alles ueber crontab im 5 Minuten Takt...

CAT
 
"[" ist ein Hardlink auf "test", das if [ foo ] ist also NICHT sh-Syntax sondern ein stinknormale Befehlsaufruf. Die genaue Syntax der sh-Konstrukte kannst du in sh(1) nachlesen (wuerde ich dringend empfehlen, das ist einfacher als es auf den ersten Moment aussieht).

Das was du erreichen willst geht uebrigens auch einfacher:
Code:
(ping -o -c 1 yahoo.de || ping -o -c 1 heise.de || ping -o -c 1 byteworker.com) \
&& echo "erreichbar" || echo "nicht erreichbar"
Zur besseren Lesbarkeit kann man die echos in eine if-then-else-fi packen. Warum das so funktioniert? Lies sh(1) aufmerksam, dann kommst du von alleine drauf. :D
 
Mal etwas anderes, denn meine "Vorschreiber", haben die Frage schon passend beantwortet.

Wenn Du das Skript in einen cronjob packen willst. Warum setzt Du dann darin den PATH?
 
Zurück
Oben