2016-05-17 14 views
4

Ich versorge eine virtual machin e mit Vagrant. Das ist mein Vagrant Ausgang, Debug Modus für meine Shell Skript:Warum funktioniert meine Sed Operation nicht?

==> mom1: + enable_https 
==> mom1: ++ cat /etc/letsencrypt/live/mom.anevis.solutions/.kpass 
==> mom1: + local password=kvnilcFqq+sXmLlonoK1dM= 
==> mom1: + sed -i 's,<property name="keyStorePassword" value="password" />,<property name="keyStorePassword" value="kvnilcFqq+sXmLlonoK1dM=" />,' /opt/activemq/conf/jetty.xml 

Es scheint zu funktionieren gut, aber wenn ich die Datei überprüfen, die angeblich geändert werden sollte, ist es leer!

<property name="keyStorePassword" value="" /> 

Das ist mein Shell-Skript:

enable_https(){ 
    local kpass=$(cat /etc/letsencrypt/live/company.com/.kpass) 
    sed -i "s,<property name=\"keyStorePassword\" value=\"password\" />,<property name=\"keyStorePassword\" value=\"${kpass}\" />," /opt/activemq/conf/jetty.xml 
} 

Das Komische ist, dass, wenn ich das gleiche Skript lokal versuchen, es funktioniert, aber nicht, wenn ich versuche, es mit Vagrant während Bereitstellung zu verwenden.

Irgendwelche Vorschläge? :)

+2

Es scheint, die Variable ist leer, obwohl es in der Debug angezeigt wird. Gibt das Echo einen Wert zurück? – 123

Antwort

0

Nur als weitere Referenz, mein Problem war, dass die gleiche Datei, die meine sed wurde angewendet wurde, wurde zuvor von einem anderen Skript geändert. Was es bedeutet, meine sed war in der Tat richtig. Es war jedoch nicht möglich, es über die Datei anzuwenden, da diese nicht mehr die gleiche war.

1

Hier versuchen Sie dieses heraus:
sed -i "s/<property name=\"keyStorePassword\" value=\"password\" \/>/<property name=\"keyStorePassword\" value=\"${kpass}\" \/>/" /opt/activemq/conf/jetty.xml

Wenn es nicht funktionieren, versuchen Sie Wert zu ersetzen ${kpass} mit einigen Testtext.

+0

Danke für diesen Sergey! –

+0

Gern geschehen, froh, hilfsbereit zu sein.) –

Verwandte Themen