On Wed, 6 Apr 2005 00:09:04 +0200, Sven Burmeister wrote
Mein Problem ist, dass ich das ganze zwischen do und done nicht verstehe.
Sorry, du hattest was von Script geschrieben, daher nahm ich an... egal. Nun mal mit Kommentaren: ------ # # 1.) Die MAC Adresse deiner WLAN Karte # WLANMAC="xx:xx:xx:xx:xx:xx" # # 2.) Diese Variable wird leer definiert. Nur zur Sicherheit. # Ich habe meine Vars gerne in einem definierten Zustand # WLANIFACE="" # # 3.) Diese VAR enthält die Liste der in Frage kommenden Interfaces # IFACES=" eth0 eth1 " # # 4.) einfache 'for in do' Schleife. Abbruchbedingung ist der Inhalt # der Var '$WLANIFACE'. Diese wurde ja oben leer definiert. Solange # sie leer bleibt, wird die Liste der Interfaces in der Variablen # '$IFACES' abgearbeitet. # for i in $IFACES; do # # 5.) Test ob Var '$WLANIFACE' leer ist. Wenn ja '&&' weiter, nächster # Befehl in der Schleife. Ansonsten Abbruch der Schleife # [ "$WLANIFACE" == "" ] && \ # der '\' dient nur dem Zeilenunbruch # # Die Ausgabe von 'ifconfig' wird weitergeleitet an den nächsten # Befehl. Fehlermeldungen, weil etwa das Interface welches gerade # geprüft wird, nicht existiert, werden nicht angezeigt. # Beachte: durch die Schleifendefinition 'for i in $IFACES' # besitzt innerhalb der Schleife die Var '$i' den jeweils aktuellen # Wert von '$IFACES', also bei jedem Durchlauf EINEN Wert aus # '$IFACES'. Dadurch wird die dort definierte Liste der Reihe nach # abgearbeitet. # ifconfig $i 2>/dev/null | \ # # die Ausgabe von 'ifconfig' wird auf das Vorhandensein des Inhaltes # der Var '$WLANMAC' geprüft. Ist diese Var in der Ausgabe enthalten # wird die VAR '$$WLANIFACE' auf den aktuellen Wert von '$i' gesetzt # und enthält so den Namen des WLAN Interfaces. Diese Var '$WLANIFACE' # kann man nun bequem per Script weiterverarbeiten um so was auch immer # zu machen. # Da '$WLANIFACE' nun nicht mehr leer ist, bricht die Schleife beim # nächsten Durchlauf bei '5.)' ab grep -q $WLANMAC && WLANIFACE="$i" # # Schleifenende # done ------ Und hier nochmal am Stück mit Ausgabe per 'echo', diesmal sogar getestet :-) In meiner Ersten Version fehlte ein '"' in der Testschleife '[]'. --------------- #!/bin/bash WLANMAC="xx:xx:xx:xx:xx:xx" WLANIFACE="" IFACES=" eth0 eth1 " for i in $IFACES; do [ "$WLANIFACE" == "" ] && \ ifconfig $i 2>/dev/null | \ grep -q $WLANMAC && WLANIFACE="$i" done echo $WLANIFACE ---------------- Uli -- The reboot: useful with linux but not necessary. Essential with Windows but not really useful.