Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Bash Problem sed

  1. #1
    Registrierter Benutzer
    Registriert seit
    09.10.2002
    Ort
    Berlin
    Beiträge
    110

    Bash Problem sed

    Hallo

    Folgender Script:

    Code:
    #!/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

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    welche werte enthalten denn die beiden variablen?
    ich glaub SCR_FU_STR hat als letztes zeichen ein \, kann das sein?
    religion is a virus from outer space

  3. #3
    Registrierter Benutzer
    Registriert seit
    09.10.2002
    Ort
    Berlin
    Beiträge
    110
    Hallo

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

    SCR_FU_STR:
    Code:
    "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

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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ä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    09.10.2002
    Ort
    Berlin
    Beiträge
    110
    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.

    Code:
    #!/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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •