Anführungszeichensalat

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

Anführungszeichensalat

Beitrag von badera » 01.12.2015 17:47:54

Folgendes Kommando funktioniert grundsätzlich so wie gewünscht:

Code: Alles auswählen

sed -i 's#searchtext#replace with env var '$MY_ENV_VAR'....#' file.txt
Nun sollte ich dieses Commando remote auf einer Cloud-Umgebung ausführen. Dabei müsste das ganze in einen Parameter gesetzt und folglich das ganze mit Single-Quotes umschlossen werden:

Code: Alles auswählen

rhc ssh myhost 'sed -i .....'
Und nun... wie muss ich mit den Single-Quotes von sed umgehen? Wie mit der Env.Variable, dass die auf dem Zielsystem expanded wird?

Ich bin schon längers am üben... vielleicht hat ja jemand gleich die Lösung auf Lager...
Danke jedenfalls schon für jeden Tipp.
- badera

linuxCowboy
Beiträge: 287
Registriert: 05.02.2013 19:47:41

Re: Anführungszeichensalat

Beitrag von linuxCowboy » 01.12.2015 18:49:44

Anregung:

Code: Alles auswählen

$ x=new
$ echo old | sed -n 's/old/'$x'/p'
new

$ a='echo old | sed -n '\''s/old/'\''$x'\''/p'\'''

$ $a
old | sed -n 's/old/'$x'/p'

$ eval $a
new
-der_linux_cowboy --- Besser werden! ... f*** w$$

Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

Re: Anführungszeichensalat

Beitrag von badera » 01.12.2015 21:28:35

Danke! Jetzt ists klar:

Code: Alles auswählen

rhc ssh myhost 'sed -i '\''s#searchtext#replace with env var '\''$MY_ENV_VAR'\''....#\'' file.txt'

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Anführungszeichensalat

Beitrag von uname » 02.12.2015 09:29:47

Also ssh unterstützt auch normale Anführungszeichen (") zur äußeren Klammerung. Oder macht rhc Probleme?

Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

Re: Anführungszeichensalat

Beitrag von badera » 02.12.2015 09:38:50

Ja, rhc scheint das nicht zu dulden, das habe ich probiert.

Antworten