bjou
Well-Known Member
Hi, in der aktuellsten freeX Ausgabe abe ich auf S. 91 nen interessanten Artikel entdeckt, wie man seine Bookmarks auf Änderungen überwachen lassen kann. Dazu war folgendes Script agegeben:
führe ich dies unter linux aus, erhalte ich den Fehler:
$ sh webwatch.sh
sed: -e Ausdruck #1, Zeichen 32: unknown command: `3'
mv: Aufruf von stat für „/home/bjou/webwatch/*“ nicht möglich: Datei oder Verzeichnis nicht gefunden
webwatch.sh: line 35: [: missing `]'
rm: Entfernen von „/home/bjou/webwatch/*.old“ nicht möglich: Datei oder Verzeichnis nicht gefunden
FreeBSD sagt mir:
sed: 1: "/^\s\{4\}<D><H3.*>webwa ...": invalid command code 3
webwatch.sh: 15: Syntax error: Bad substitution
Es scheint also (u.a.) an dem Codefragment <\/H/3> im ersten sed Aufruf zu liegen. Eigentlich wollte ich das selbst fixen, dachte das geht relativ schnell, allerdings is sed ziemlich mächtig und unübersichtlich, wenn man noch nie damit gearbeitet hat und ich habe gerade auch keine Zeit mehr, mich da reinzusteigern, kennt sich jmd evtl damit aus und kann das Dingen mal testen?
Code:
#!/usr/local/bin/bash
# webwatch.sh
BOOKMARKS="/pfad/zu/bookmarks/bookmarks.html"
WF="webwatch"
WD="/home/bjou/webwatch"
WL="$WD/log.old"
MAILADR="mail@email.com"
for bookmark in $(cat $BOOKMARKS | sed "/^\s\{4\}<D><H3.*>$WF<\/H/3>/,/^\s\{4\}<\/D/L>/!d" | grep "<DT><A" | sed "s/.*<A HREF=\"\([^\"]*\).*/\1/"); do
bookmarks[${#bookmarks[*]}]=$bookmark
done
for i in $(seq 0 $((${#bookmarks[*]} - 1))); do
touch "$WD/${bookmarks[$i]//\//_}"
done
for i in $WD/*; do
mv "$i" "$i.old"
done
for i in $(seq 0 $((${#bookmarks[*]} - 1))); do
lynx -nolist -dumps "${bookmarks[$i]}" > "$WD/${bookmarks[$i]//\//_}"
if ! cmp -s "$WD/${bookmarks[$i]//\//_}" "$WD/${bookmarks[$i]//\//_}.old"; then
if [ ! -f "$WL"]; then
echo -e "webwatch $(date)\n" > "$WL"
fi
echo "----------------" >> "$WL"
echo "${bookmarks[$i]}" >> "$WL"
echo "----------------" >> "$WL"
diff "$WD/${bookmarks[$i]//\//_}.old" "$WD/${bookmarks[$i]//\//_}" >> "$WL"
fi
done
if [ -f "$WL"]; then
echo -e "----------------\n" >> "$WL"
cat "$WL" | mail -s webwatch $MAILADR
fi
rm $WD/*.old
führe ich dies unter linux aus, erhalte ich den Fehler:
$ sh webwatch.sh
sed: -e Ausdruck #1, Zeichen 32: unknown command: `3'
mv: Aufruf von stat für „/home/bjou/webwatch/*“ nicht möglich: Datei oder Verzeichnis nicht gefunden
webwatch.sh: line 35: [: missing `]'
rm: Entfernen von „/home/bjou/webwatch/*.old“ nicht möglich: Datei oder Verzeichnis nicht gefunden
FreeBSD sagt mir:
sed: 1: "/^\s\{4\}<D><H3.*>webwa ...": invalid command code 3
webwatch.sh: 15: Syntax error: Bad substitution
Es scheint also (u.a.) an dem Codefragment <\/H/3> im ersten sed Aufruf zu liegen. Eigentlich wollte ich das selbst fixen, dachte das geht relativ schnell, allerdings is sed ziemlich mächtig und unübersichtlich, wenn man noch nie damit gearbeitet hat und ich habe gerade auch keine Zeit mehr, mich da reinzusteigern, kennt sich jmd evtl damit aus und kann das Dingen mal testen?