2017-07-29 6 views
0

J'écris un code qui va changer l'adresse IP du panneau VestaCP automatiquement. J'ai besoin du code pour remplacer la variable $ oldIP par une nouvelle variable $ newIP, j'ai donc écrit ce morceau de code.Bash trouver et remplacer la chaîne

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

Mais le code ne remplace pas le oldIP de oldIP.conf (123.123.123.123.conf).

Cependant, si j'essaie

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

Il fonctionne parfaitement, même si je ne peux pas utiliser ce code depuis toujours les serveurs ont une adresse IP différente et je ne peux pas prédire la prochaine IP quand il change.

Qu'est-ce que je fais mal ici? Des solutions? Merci d'avance!

P.S. Si ça aide à savoir, je suis sur Ubuntu 16.04.

Répondre

3

Vos variables ne sont pas développées entre guillemets simples. Utilisez plutôt des guillemets:

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

Merci beaucoup! Cela a résolu mon problème. Je ne peux pas croire que j'ai fait cette erreur stupide lol –