Hallo, Am Fri, 11 Nov 2005, Thomas Moritz schrieb:
Am Mittwoch, 9. November 2005 21:59 meinte David Haller: [..] Du warst so ausfuehrlich:-) Dann sollte aber die case-Variante nicht fehlen:
case "`wget -c $woher -O $wohin`$?" in 0) echo "hat geklappt"; echo "machnochwas";; 0) echo "hat geklappt"; echo "machnochwas";; 1) echo "ging schief"; echo "machs nochmal";; *) echo "Ende mit Fehlercode=$?";; esac
*HUCH*[tm]!!!! Dascha ein Konstrukt, dass ich noch gar nicht kenne! Schon besser. Aber zum korrekt Variablen quoten musst du noch paranoider werden! Besser: case `wget -c -O "$wohin" "$woher"` in ... Die "" um die `` scheinen nicht noetig zu sein (auch nicht bei der ash), und da $? keine Strings mit wilden Werten zurueckliefert... Ebenso das $? nach den ``. Ausserdem solltest du dich an die Reihenfolge "Programm [OPTIONEN] [ARGUMENTE]" halten, d.h. das '-O bla' ist eine Option (mit deren Argument) und das "$woher" ist das Argument. Eine andere Reihenfolge geht oft, aber nicht immer(!), mit GNU Utils gut, mit anderen Utils faellst du aber schnell auf die Schnauze. Man sollte sich also sowohl das "paranoide" quoten von Variablen usw., als auch eine paranoide Reihenfolge von "Erst Optionen, dann Argumente" angewoehnen. Ja, ich mach das auf der Kommandozeile auch nicht immer, wenn eine laengere Befehls-Zeile nach und nach entsteht -- in Scripten bin ich aber (inzwischen) sorgfaeltig.
Das hat den Vorteil, dass man bei Programmen mit mehreren definierten ReturnCodes auf jeden beliebigen entsprechend reagieren kann. (schoen uebersichtlich)
Jup. Ist z.B. bei antivir praktisch.
Im Beispiel bin ich nur von 0=OK 1=!OK ausgegangen. Hatte gerade keine Lust mit wget rumzuspielen:-)
AFAIK liefert wget keine anderen Exitcodes.
PS.: Die Option -O von wget hatte ich mir nie angewoehnt, da sie nur bei 1-File-Downloads (wie hier vom OP gesucht) sinnvoll ist. Der zu schreibende FileName ist hierbei zwingend erforderlich.
Jup. Hier aber IMHO angebracht ;)
Mein Standard ist eher folgender Aufruf:-)
wget -r -c "$woher" -nH --directory-prefix="$wohin" --cut-dirs=x (bei grossen Sachen kommt noch ein --dont-remove-listing hinzu)
Meiner:
cd "$dir_wos_hinsoll" && wget -m -k -np [-nr] "$woher"
bzw.:
cd /wo/hin/ && machwas | wget -m -k -np -i -
Achso: '-c' ist natuerlich ggfs. auch dabei!
Insbesondere das '-i'-Feature von wget ist extrem praktisch wenn man
z.B. Webcomics schluerft und per printf o.ae. zusammenbastelt... Oder
auch nur gewisse URLs eben in einer Datei aufhebt... ;) curl kann das
wohl nicht. *hurhur*
Und dann hab ich noch ein paar 'wget-as-*' shell-aliase, die wget mit
einer passenden '-U' Option aufrufen, z.B.:
wget-as-mozilla is aliased to `wget -U "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021130"'
Und es gibt tatsaechlich Seiten, die ein ehrliches 'wget' ablehnen, bei
denen man mit dem 'wget-as-mozilla' dann aber doch problemlos saugen
kann...
-dnh
--
Linux renders ships, NT is rendering ships useless.
-- apparently Robert Riggs