Hallo, Am Don, 17 Aug 2006, Maurice Schmidt schrieb: [..]
meins sieht jetzt so aus: [...] cd1=/tmp/isofiles/cd1.iso
if [ ! -e $cd1 ]; then
Wenn du "$cd1" nicht quotest, d.h. nicht in Anführungszeichen schreibst, dann kannst du damit brutal auf die Fresse fliegen. Gewöhne es dir von Anfang an an, immer so streng zu quoten wie möglich (also möglichst mit '', sonst mit ""). Und um nicht zu quoten mußt du schon einen sehr guten Grund haben. Das gilt für weitere Verwendungen unten von $cd1 genauso.
wget http://ftp.join.uni-muenster.de/pub/linux/distributions/opensuse/distributio... $cd1 ;
Was soll das sein? => wget --help wget URL wget -O AUSGABE_DATEI URL So wie du es schreibst versucht wget zuerst das ISO und anschließend "$cd" ins aktuelle Verzeichnis runterzuladen... Und außerdem: So lange "Dinger" wie hier die URL sollte man, besonders wenn sie mehrfach auftauchen, in Variablen auslagern. In meinem Vorschlag war das die Variable "URL".
else { ^ Wozu?
while : do echo "Soll die Datei $cd1 überschrieben werden ? Ja / Nein?" read line # read: Zeile von StdIn einlesen
Das ist noch ok, den Prompt kann man selber ausgeben, aber ein 'echo -n' ist da besser. Bzw. eben gleich 'read -p'.
case "$line" in [j]|) echo "Die Datei $cd1 wird überschrieben!"
help case
wget http://ftp.join.uni-muenster.de/pub/linux/distributions/opensuse/distributio... $cd1 ;
s.o.
break;; [n) echo "Die Datei $cd1 bleib erhalten. Weiter gehts." sleep 1
^^^ das [n). So wird das nix. help case
break;; *) echo "Nur j oder n eingeben.";; esac done } fi
Na also, du hast das 'fi' gefunden ;)
[...] wenn ich beides vergleiche.... MAN ICH EIN MÜLL GESCHRIEBEN!!!
Aber die Formatierung ist schonmal deutlich verbessert. Aber nochwas: wenn du Dateien spiegeln willst, das kann wget auch selber, da mußt du kein Script schreiben. Der einzige Nachteil ist, daß du, wenn es sinnvoll sein soll, die Verzeichnisstruktur vom Server uebernehmen mußt. Aber da kann man immer noch Symlinks oder Hardlinks verwenden. Und dann kann man, wie ich z.B., auch direkt von Festplatte installieren, nur die erste CD muß man teilweise auspacken... Beispiel bzgl. wget / SUSE-ISOs: Versuch mal dies hier: ==== #!/bin/sh BASE="ftp://ftp.join.uni-muenster.de/pub/linux/distributions/opensuse/distribution" for i in `seq 1 5`; do echo "${BASE}/SL-10.2-Alpha2/iso/SUSE-Linux-10.2-Alpha2-i386-CD${i}.iso" done | wget -i - -nr -c -m ==== Bitte lese dir wegen der wget-Optionen 'info wget' durch! Was der Teil davor macht: kommentiere in der letzten Zeile das "| wget ..." aus und starte das script mit 'sh -x scriptname'.
So, und jetzt gehst du erstmal hin, setzt dich auf den Hosenboden, liest "help read", "help case" bzw. generell "man bash" und selflinux, bis du erklaeren kannst, wie und warum das obige funktioniert. Nicht nur was es macht. Oder was du glaubst was es macht oder machen soll.
da ich gesehen habe, das man sich ne menge schreibarbeit ersparen kann werde ich mir das jetzt hinter die ohren schreiben und das morgen mal in angriff nehmen. bin ja echt mal gespannt wieviel ich da noch kützen kann.
Wenn du jetzt noch dein "Großschreibtaste" wiederfindest...
Und schreib (formuliere und formatiere) in Zukunft bitte leserlich. Sorry... da ich nicht wusste ich ich das anders hätte erklären sollen hab ich das so geschrieben.
Naja, wenn du dich weiter so verbesserst (dein Script oben war von der Formatierung her schon mal ok), dann gibt's Hoffnung ;) -dnh -- "The only "intuitive" interface is the nipple. After that, it's all learned." -- Bruce Ediger on X interfaces.