Hallo, Am Wed, 09 Nov 2005, Thomas Moritz schrieb: [..]
[1] Warum schreibst Du das File eigentlich nicht gleich an die richtige Stelle?
#!/bin/bash woher="http://www.von.hier.de" wohin="/dev/null" # :-) wget -c "$woher" -nH --directory-prefix="$wohin" && machnochwas
woher="http://www.von.hier.de/foo-1.2.3.bar.baz" ###### Vorbereitung ###### ### Variante GNU Bash: wohin="${woher##*\/}"; ## basename "$wohin" in bash wohin="${wohin//.bar.baz/}_v$(date '+%F').bar.baz" ### Variante GNU basename: wohin="$(basename "$woher" '.bar.baz')_v$(date '+%F').bar.baz" ###### Download ###### ### Variante '&&' '||': wget -c -O "$wohin" "$woher" \ && { machnochwas; und noch mehr } \ || { retval=$?; echo "So ein Mist, wget kann $woher nicht saugen" >&2; echo "ODER machnochwas und noch mehr hat nicht geklappt" >&2; exit $retval; } ### Variante 'if-then-else-fi': if wget -c -O "$wohin" "$woher"; then machnochwas und noch mehr else retval=$? echo "So ein Mist, wget kann '$woher' nicht saugen" >&2 exit $retval fi Der Hauptunterschied sind die einfacheren Moeglichkeiten zur Fehlerbehandlung in der if-then-else-fi Variante. Bei der '&&-||' muss man diese wiederum schachteln oder dort dann if..fi einbauen, und das wird dann schnell unuebersichtlich. Wenn man also das "machnochwas" usw. mehr als ein Befehl ist (plus Fehlerbehandlung) und dies nicht in eine Funktion auslagert empfiehlt sich eindeutig die "if-then-else-fi" Variante. Andererseits ist eben, in einfachen Faellen, die "&&-||" Variante kurz und praegnant und gut lesbar. Insbesondere in einfachen Faellen, die ins Schema Befehl || Fehlermeldung passen mach ich das gerne. z.B.: test -r ~/.foorc && . ~/.foorc || { echo "cannot read ~/.foorc" >&2; exit 1; } Dabei faengt das || { .. } sowohl Fehler beim 'test -r' ab als auch Fehler beim eigentlichen Lesen der Datei mit source ("."). Vgl.: $ false && ( exit 42; ) || echo "$?" 1 ^^^^^^^^^wird nicht ausgefuehrt, exitcode von false ist 1. Fehlermeldung ("echo $?") reagiert auf's "false" $ true && ( exit 42; ) || echo "$?" 42 ^^^^^^^^^wird ausgefuehrt, da exitcode von true ist 0 Fehlermeldung ("echo $?") reagiert auf's "exit 42" Achso, bevor's untergeht: ich wollte v.a. die Option '-O' von wget hervorheben: wget -O AUSGABEDATEI URL BTW: DIE Dokumentation von wget ist 'info wget'(!). Und dann waere da noch 'curl' als Alternative zu wget, aber das kann kein "continue" ohne Nachhilfe (Angabe eines Offsets, wenn ich die Ausgabe von --help richtig lese). Und allein das disqualifiziert 'curl' IMHO schon. -dnh PS: Auf meiner "ex-SuSE 6.2" hab' ich curl 7.12, auf der SuSE 9.1 nur 7.11 (und auch noch ohne "Largefile"-Support). *hehe*