PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : hell-Programmierung: Was machen, wenn Slash in Variable?



substitute
30-09-2007, 12:26
Hi!

Ich beschäftige mich gerade etwas mit der Shell-Programmierung unter Linux (Ubuntu-Bash) und stoße dabei leider gerade auf ein Problem:
Ich habe eine Datei seite.template, die irgendwo im Text


<REPLACER>

enthält.
Nun möchte ich diesen Text-Teil durch URLs ersetzen und das Ergebnis in seite.html speichern.
Mein bisheriger Versuch:


cat "seite.template" | sed s/"<REPLACER>"/${LINKS}/g > "seite.html"

Prinzipiell funktioniert dieser Aufruf, das Problem sind die Sonderzeichen in der Variable $LINKS- deren Inhalt kann z.B. so aussehen:


http://example.org/subdir/site.html
http://example.org/subdir/subdir/site11.html
http://example.org/index.html

Durch die Slashes wird der Parameter-Teil nach sed zerstört- die Ausgabe lautet dann nur noch:


sed: -e expression #1, char 15: unterminated `s' command

Was muss ich tun, damit es funktioniert? Das Problem scheint laut Google ja recht verbreitet zu sein, nur leider habe ich mit den Lösungsvorschlägen nicht viel angefangen, weil es bei denen nur um Sonderzeichen ging, nicht aber um eine Variable, welche die Sonderzeichen enthält (weswegen die Maskierung mit ' oder \/ nicht möglich ist).

MfG
Fabian

peschmae
30-09-2007, 12:45
Mit sed musst du nicht zwingend / benutzen als Separator; das hat sich nur irgendwie so ein bisschen als Standard etabliert, ist aber wie du bemerkt hast für Pfadbearbeitung recht unpassend. Ich benutze z.B. oft ein #.


cat "seite.template" | sed s#"<REPLACER>"#${LINKS}#g > "seite.html"

Oder in der coolen Variante mit Spaces:


cat "seite.template" | sed "s <REPLACER> ${LINKS} g" > "seite.html"

MfG Peschmä

substitute
30-09-2007, 13:40
Vielen Dank! Funktioniert wunderbar!
MfG
Fabian