Bash Shell Script - wie debuggen? / brauche Unterstützung

KeepXtreme

Lt. Commander
Registriert
Sep. 2008
Beiträge
1.402
hi zusammen,

ich gebe zu, dass ich mit bash skripten noch ganz am Anfang stehe (war bisher einfach nie nötig). Jetzt habe ich den untenstehenden Code und komme mit dem Debuggen einfach nicht mehr weiter.

Code:
#!/bin/bash
#
#Script to warm up varnish cache to always serve stalled content to anonymous users
#
#all sites containing sitemap.xml files which should be processed
Urls[0]="/sitemap.xml"


#iterate through Urls array
for URL in "${Urls[@]}"
do
	echo ${URL}
	#getting sitemap
	wget http://$URL/sitemap.xml --quiet --no-cache --output-document - | egrep -o "http://$URL[^<]+" | while read line
	do
		#iterate through sitemap and call every link
		echo ${line}
		curl -A 'Cache Warmer' -s -L $line #> /dev/null 2>&1
	done
done

die Urls oben sind normalerweise vollständig, ich möchte sie hier aber nur ungern offenlegen.
die URLs zeigt er mir auch noch an, wenn ich das --quiet entferne, wget auch noch (am Ende: in stdout gespeichert)

wenn ich das wget mit der Schleife direkt in der Bash eingebe (ohne das Curl), kriege ich die sitemap.xml auch fast richtig dargestellt...

was übersehe ich?
 
Zuletzt bearbeitet:
Du kannst als erste Zeile "#!/bin/bash -x" schreiben.
 
Ich arbeite mit
set -x
[Anweisung die ich im Detail betrachten will]
set +x

Oder wahlweise mit
echo "Befehl den ich eigentlich absetzen würde"
Im Beispiel wäre das
echo "wget http://$URL/sitemap.xml --quiet --no-cache --output-document - | egrep -o \"http://$URL[^<]+\" | while read line"
 
danke euch 2, so habe ich meine Fehler gefunden und das Skript funktioniert jetzt
 
Und dürfen wir auch an der Lösung teilhaben oder betrachtest Du es als ausreichend wenn Du hier etwas lernst?
 
Zurück
Oben