[gelöst] ed im Script - die Zweite

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
k2
Beiträge: 132
Registriert: 14.08.2002 22:29:28
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] ed im Script - die Zweite

Beitrag von k2 » 17.01.2019 01:43:56

Hallo nochmals,

und schon wieder Ed, die BASH und ich.

Folgendes Problemchen: In einer Zeile die background-image: enthält soll '), url(./ durch '), url(${rel_back_path} bzw. natürlich durch '), url(und-den-inhalt-der-Variable-rel_back_path ersetzt werden.
Das sieht bei mir dann so aus:

Code: Alles auswählen

ed -v -l -s ${indexname} <<EOF
/background-image:/s/'), url(\.\//'), url(${rel_back_path}/
wq
EOF
Das klappt auch - bis auf den Teil mit der Variablen ${rel_back_path}.
Ich erhalte die Fehlermeldung: script, line 1: Invalid command suffix und keine Ersetzung findet statt.

Der von mir festgestellte Grund ist: in der Variablen rel_back_path steht z.B. "../" oder "../../".
Und der / in der Variablen wird als Teil des Ersetzungsbefehls interpretiert und zerreist diesen so, dass wohl ein falscher Suffix entsteht.
Wenn in der Variable die / escapet wären, z. B "..\/", würde die Ersetzung funktionieren - nur leider habe ich diese Wahl nicht.

Hat da jemand eine Idee, sonst muss ich einen Workaround einbauen...

Grüße
Zuletzt geändert von k2 am 17.01.2019 02:38:15, insgesamt 1-mal geändert.

tobo
Beiträge: 1990
Registriert: 10.12.2008 10:51:41

Re: ed im Script - die Zweite

Beitrag von tobo » 17.01.2019 02:07:23

Wie in sed kannst du auch in ed das substitute-Kommando mit einem anderen formalen Trenner benutzen (z.B. #), solange Eindeutigkeit herrscht und es z.B. kein Leerzeichen oder Zeilenumbruch ist. Und Variablen zu quoten schadet selten, schließlich packt die Shell das ja schon aus.

Code: Alles auswählen

ed -v -l -s "${indexname}" <<EOF
/background-image:/s#'), url(\.\/#'), url("${rel_back_path}"#
wq
EOF

k2
Beiträge: 132
Registriert: 14.08.2002 22:29:28
Lizenz eigener Beiträge: MIT Lizenz

Re: ed im Script - die Zweite

Beitrag von k2 » 17.01.2019 02:37:06

DANKE! :THX:

da hätte ich auch selbst d'rauf kommen können :facepalm:

Code: Alles auswählen

  /background-image:/s%'), url(\./%'), url(${rel_back_path}%
so läuft es jetzt bei mir!

Antworten