Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Bash-Variable in sed-Script? Hilfe!

  1. #1
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762

    Bash-Variable in sed-Aufruf? Hilfe!

    ich habe ein Makefile in dem an einer Stelle der String "/usr" durch das ersetzt werden soll was in der Variablen $PREFIX eines Shellscripts steht.

    Sinngemäß würde das also so funktionieren:
    Code:
    sed -e s/\\/usr/$PREFIX/g Makefile.Linux > Makefile.Linux.ST
    Problem: das $PREFIX muss von der Shell ersetzt werden bevor sed damit was macht und ich habe keine Ahnung wie ich das machen soll, denn entweder meckert sed mit
    sed: -e expression #1, char 10: Unknown option to `s'
    oder es wird auch vor der Shell maskiert so dass sed daraus den String "$PREFIX" und nicht den Bash-Inhalt von $PREFIX macht...
    Ich hab schon "" und '' und `echo $PREFIX` und $(echo $PREFIX) versucht, aber das nützt alles nichts...
    Geändert von SeeksTheMoon (19-09-2004 um 14:03 Uhr)
    I haven't lost my mind - It's somewhere on a backup-disc

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Code:
    "s#/usr/#$PREFIX#g"
    Wobei das g wohl recht überflüssig ist.

    Der Grund wieso deine Variante nicht funktioniert:
    Code:
    sed -e s/\\/usr/$PREFIX/g
    wird von der Shell - bei $PREFIX=/usr/local/ durch das ersetzt:
    Code:
    sed -e s/\\/usr//usr/local//g
    und da guckt sed nicht mehr durch weil die Bash - nicht wie du - die / nicht escaped. Entsprechend bist du mit einem anderen Sed-Trenner besser beraten.

    MfG Peschmä

    P.S. die " " um den Sed-Ausdruck sind nicht nötig, aber machen dass die Sache auch funktioniert wenn es im $PREFIX-Pfad ein Leerzeichen hat.
    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)

  3. #3
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    sed -e "s#\/usr#$PREFIX#g" Makefile.Linux klappt, danke
    Geändert von SeeksTheMoon (19-09-2004 um 16:49 Uhr)
    I haven't lost my mind - It's somewhere on a backup-disc

Lesezeichen

Berechtigungen

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