Ich will mir ein bash-script schreiben mit dem ich mir auf einfache weise einen neuen "provider" anlegen kann. Dazu muss ich in /etc/sysconfig/network/providers/ die Dateien Zählen. Ich mache das wie folgt: for ((I=0;$I<100;I++)); do if [ -f /etc/sysconfig/network/providers/provider${I} ] ;then ( NUMMER=$I ) else ( break ) fi done echo "Weiter geht es mit Nummer $NUMMER" Leider sieht die Ausgabe so aus: >>Weiter geht es mit Nummer<< $NUMEMR scheint leer zu sein. warum? wie bekomme ich das hin? Danke, Manu
Hi Manu, Am Sonntag, den 31.10.2004, 11:28 +0100 schrieb Web-Zocker@gmx.de:
Ich will mir ein bash-script schreiben mit dem ich mir auf einfache weise einen neuen "provider" anlegen kann. Dazu muss ich in /etc/sysconfig/network/providers/ die Dateien Zählen. Ich mache das wie folgt:
for ((I=0;$I<100;I++)); do if [ -f /etc/sysconfig/network/providers/provider${I} ] ;then ( NUMMER=$I ) else ( break ) fi done echo "Weiter geht es mit Nummer $NUMMER"
Leider sieht die Ausgabe so aus: >>Weiter geht es mit Nummer<< $NUMEMR scheint leer zu sein. warum? wie bekomme ich das hin?
da eine for-if-break Schleife etwas schlecht performt, würde ich eher auf ein "cd /etc/sysconfig/network/providers/;ls -1 provider*|sort|tail -n 1|cut -b 9-" umsteigen. Ich bin mir auch nicht ganz sicher, dass bash ein I++ überhaupt unterstützt. IMHO muss das eher ein $((I++)) sein oder sowas in der Art. Am besten du schaust mal in den ABS-Guide http://tldp.org/LDP/abs/html/index.html -- Viele Grüße, Kilian
Hallo Manu, Web-Zocker@gmx.de schrieb:
Leider sieht die Ausgabe so aus: >>Weiter geht es mit Nummer<< $NUMEMR scheint leer zu sein. warum? wie bekomme ich das hin?
$NUMMER ist bei Dir glaube ich keine globale Variable, es kann also nur innerhalb Deiner for-Schleife auf sie zugegriffen werden. Nur so eine Idee von mir... Michael
Ich will mir ein bash-script schreiben mit dem ich mir auf einfache weise einen neuen "provider" anlegen kann. Dazu muss ich in /etc/sysconfig/network/providers/ die Dateien Zählen. Ich mache das wie folgt:
for ((I=0;$I<100;I++)); do if [ -f /etc/sysconfig/network/providers/provider${I} ] ;then ( NUMMER=$I ) else ( break ) fi done echo "Weiter geht es mit Nummer $NUMMER"
Leider sieht die Ausgabe so aus: >>Weiter geht es mit Nummer<< $NUMEMR scheint leer zu sein. warum? wie bekomme ich das hin?
Danke, Manu
Hallo Manu, die bash kann mit I++ nix anfangen. Du könntest mit einer z.B. while Schleife zählen: ----------------------- I=0 while [ $I -le 100 ] do echo $I I=$(($I + 1)) done ----------------------- Wenn es Dir nur um die Anzahl der Dateien /etc/sysconfig/network/providers/provider* geht, mach es doch mit dieser einen Zeile: ls /etc/sysconfig/network/providers/provider* | wc -l Das Ganze in einer Variable: I=$(ls /etc/sysconfig/network/providers/provider* | wc -l) Fertig. Gruß Christian.
participants (4)
-
Christian Lange
-
Kilian Krause
-
Swantje & Michael Ludwig
-
Web-Zocker@gmx.de