PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash Problem sed



klaus_harrer
08-03-2006, 11:57
Hallo

Folgender Script:



#!/bin/sh
#set -xv

SCR_FU_STR=$(sed -e 's/\\/\\\\/g' -e 's/\"/\\\"/g' -e 's/^/"/g' -e 's/$/" \"\\n"/g' $1)
SCR_FU_FUNC="(set! outfile(fopen \"/tmp/output\" \"w\"))\n(fwrite (string-append) outfile)\n(fclose outfile)"

echo -e "$SCR_FU_FUNC" | sed "s/string-append/string-append $SCR_FU_STR/"




Das Problem liegt in der letzten Zeile.
Hier bekomme ich folgende Fehlermeldung:
sed: -e Ausdruck #1, Zeichen 46: unterminated `s' command

Vieleicht hat jemand eine Lösung für das Problem.

MfG
klaus_harrer

ninguno
08-03-2006, 12:22
welche werte enthalten denn die beiden variablen?
ich glaub SCR_FU_STR hat als letztes zeichen ein \, kann das sein?

klaus_harrer
08-03-2006, 13:26
Hallo

Keine "\" aber ein Anführungszeichen als allererstes Zeichen und das ist das Problem:

SCR_FU_STR:


"show = 0;" "\n"
"" "\n"
"Picture = new Array();" "\n"
"Picture[0] = new Image();" "\n"
"Picture[0].src = Src_data[0][0];" "\n"
"Picname = Picture[show].src.substring(Picture[show].src.lastIndexOf(\"/\") + 1,Picture[show].src.length);" "\n"
"Pic_window = 0;" "\n"
"sw = true;" "\n"
"thumb_change = false;" "\n"
"" "\n"
"function Pic_enlarge()" "\n"
"{" "\n"
"var Win_width = Picture[show].width + 60;" "\n"
"var Win_height = Picture[show].height + 60;" "\n"
"var Img_width = Picture[show].width;" "\n"
"Pic_window = window.open(\"\",\"\",\"width=\" + Win_width + \",height =\" + Win_height + \",left=0,top=0\");" "\n"
"with(Pic_window.document)" "\n"
"{" "\n"
"open(\"text/html\");" "\n"
"write(\"<head>\");" "\n"
"write(\"<title>\" + Picname + \"</title>\");" "\n"
"write(\"</head>\");" "\n"
"write(\"<body bgcolor='#000000' style='margin:0px'>\");" "\n"
"write(\"<div style='width:\" + Img_width + \";margin-left:auto;margin-right:auto;margin-top:20px;text-align:center;'>\");" "\n"
"write(\"<img src=\" + Picture[show].src + \" style='margin-bottom:10px;border-width:1px;border-style:solid;border-color:#FFF'>\");" "\n"
"write(\"<a href='javascript:window.close()' style='color:#FFF;'>Fenster schliessen</a>\");" "\n"
"write(\"</div>\");" "\n"
"write(\"</body>\");" "\n"
"close();" "\n"
"}" "\n"
"}" "\n"
"" "\n"



MfG
klaus_harrer

peschmae
08-03-2006, 16:11
Das letzte mal als ich sowas ähnliches machen musste hab ich schliesslich auf den Makroprozessor m4 zurückgegriffen.

Das ging dann sinngemäss etwa so:
1. sed "s#string-append#string-append include('datei_mit_SCR_FU_STRdrin')#" -i datei
2. m4 datei > datei.new

MfG Peschmä

klaus_harrer
08-03-2006, 20:59
Hallo

Von m4 habe schon gehört im zusammenhang mit pflegen einer privaten Homepage, müsste mich aber noch mit beschäftigen. Ich habe eine andere Lösung gefunden.




#!/bin/sh
#set -xv

SCR_FU_STR=$(sed -e 's/\\/\\\\/g' -e 's/\"/\\\"/g' -e 's/^/"/g' -e 's/$/" \"\\n"/g' -e 's/\"\"//g' $1)
SCR_FU_FUNC=`echo "(set! outfile(fopen \"/tmp/output\" \"w\")) | (fwrite (string-append $(echo "$SCR_FU_STR")) outfile)|(fclose outfile)"`

echo "$SCR_FU_FUNC" | tr -s \| \\n


Hätte noch eine kleine Frage.
Im Zuge der Formatierung der SCR_FU_STR enstehen Zeilen die nur ein "\n" beinhalten.
Ist es möglich dies so zu formatieren das dieses "\n" eine Zeile höher am Ende angehängt wird.

MfG
klaus_harrer