2017-07-29 7 views
0

Ich schreibe einen Code, der die IP des VestaCP-Panel automatisch ändert. Ich brauche den Code, um die Variable $ oldIP durch eine neue Variable $ newIP zu ersetzen, also habe ich diesen Code geschrieben.Bash suchen und ersetzen Zeichenfolge

sudo perl -pi -e 's/${oldIP}/${newIP}/g' /etc/nginx/conf.d/${oldIP}.conf 

Aber der Code ersetzt nicht die oldIP von oldIP.conf (123.123.123.123.conf).

Allerdings, wenn ich versuche

sudo perl -pi -e 's/123.123.123.123/123.456.123.456/g' /etc/nginx/conf.d/123.123.123.123.conf 

Es funktioniert einwandfrei, obwohl ich nicht diesen Code verwenden kann, da je Server eine andere IP hat und ich kann die nächste IP nicht vorhersagen, wann sie sich ändert.

Was mache ich hier falsch? Irgendwelche Lösungen? Danke im Voraus!

P.S. Wenn es hilft zu wissen, bin ich auf Ubuntu 16.04.

Antwort

3

Ihre Variablen werden nicht zwischen einfachen Anführungszeichen erweitert. Verwenden Sie stattdessen doppelte Anführungszeichen:

sudo perl -pi -e "s/${oldIP}/${newIP}/g" /etc/nginx/conf.d/${oldIP}.conf 
+1

Vielen Dank! Das hat mein Problem gelöst. Ich kann nicht glauben, dass ich diesen blöden Fehler gemacht habe lol –