2017-06-22 3 views
0

In meinem Bash-Skript. Ich habe, wie untenAktualisierung des Parameterproblems über sed

HOST_IP=`hostname -I` 

sed -i -e "/dirParam\.dprop_web_service_host=/ s/=.*/=http://$HOST_IP:9001/datasources/$INSTANCE" -e "s/\r$//" $SCB_ORDM/dir.properties 

Vorher: directorParam.dprop_web_service_host = http://localhost:9001

Während das obige Skript ausführen. Ich bekomme Fehlermeldung

sed: -e Ausdruck # 1, char 50: unbekannte Option auf `s'

Ich erwarte: directorParam.dprop_web_service_host = http://10.10.405.30:9001

+0

Sie müssen 'sed' Befehl in das Zeichen'/'s zu entkommen verwendet werden, oder die Trennzeichen ändern ... es kann nicht herausfinden, was was ist (und wahrscheinlich auch niemand anders). Und 'sed' ist vielleicht gar nicht nötig, wahrscheinlich würde auch die Bash-Parameter-Substitution funktionieren. –

Antwort

1

das nächste Zeichen nach s (Ersatz-Befehl) ist / so ist es das Trennzeichen in Muster und ersetzen-String

sed -i -e "/dirParam\.dprop_web_service_host=/ s/=.*/=http:\/\/$HOST_IP:9001\/datasources\/$INSTANCE/" -e "s/\r$//" $SCB_ORDM/dir.properties 
entwertet werden müssen

sonst kann ein anderes Trennzeichen

sed -i -e "/dirParam\.dprop_web_service_host=/ [email protected]=.*@=http://$HOST_IP:9001/datasources/[email protected]" -e "s/\r$//" $SCB_ORDM/dir.properties 
+0

Es funktioniert aber ich bekomme – BalaB

+0

directorParam.dprop_web_service_host = http: //10.10.405.30: 9001/data – BalaB

+0

Ich bekomme Abstand zwischen IP und Port :(. Ich habe die zweite Option verwendet – BalaB