Hi Swen Ich bin auch nicht der Hirsch, aber ich versuch mich mal.
Am Montag, 4. April 2005 23:08 schrieb Uli Wachowitz:
------ WLANMAC="xx:xx:xx:xx:xx:xx" WLANIFACE=""
IFACES=" eth0 eth1 "
Das sind die im Script verwendeten Variablen. Der Backslash im Folgenden ist die Anweisung die Zeile fortzusetzen. Zwischen 'do' und 'done' ist also alles auf einer Zeile. Die Schleife wird zweimal durchlaufen, mit den Einträgen 'eth0' und 'eth1' in der Variable $i.
for i in $IFACES; do [ "$WLANIFACE == "" ] && \
Falls $WLANIFACE leer ist (der Test [ "$WLANIFACE == "" ] ist wahr) wird der Rest abgearbeitet.
ifconfig $i 2>/dev/null | \
Eventuelle Fehler werden fortgeworfen (2>/dev/null, 2 = stderr, im Gegesatz zu 1 oder nichts = stdout, die normale Ausgabe). Also die normale Ausgabe des Befehls 'ifconfig' mit den Interfaces als Argument werden nach dem Befehl 'grep' gepipt.
grep -q $WLANMAC && WLANIFACE="$i"
Falls der Returnwert von grep wahr ist (grep hat den Inhalt von $WLANMAC gefunden) wird die Variable $WLANIFACE mit "$i" gefüllt (das Gegenteil wäre '||', also bei unwahrem Returnwert).
done
[ "$WLANIFACE == "" ] && \ Ist das die Bedingung für die Schleife?
Die Schleife hat keine Abbruchbedingung. Sie läuft durch alle Einträge in $IFACES.
Wenn ich die Antworten doch im Internet finden kann, wäre ich für einen entsprechenden Querverweis dankbar.
'man bash' auf der Konsole. http://www.linux-ag.de/linux/LHB/node26.html#SECTION00440000000000000000 http://www.tu-chemnitz.de/urz/kurse/unterlagen/shell-progr/bourne/bourne.htm... http://en.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html http://tldp.org/LDP/abs/html/ Man möge mich korrigieren Gruss Jürg