2017-07-29 180 views
0

我正在寫一個代碼,它會自動更改VestaCP面板的IP。 我需要代碼用新變量$ newIP替換變量$ oldIP,所以我寫了這段代碼。Bash找到並替換字符串

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

但是,該代碼並不能替代oldIP.conf(123.123.123.123.conf)中的oldIP。

但是,如果我嘗試

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

它完美的作品,雖然曾經因爲服務器有不同的IP,我不能使用此代碼,我不能預測未來IP時,它的變化。

我在做什麼錯在這裏?任何解決方案提前致謝!

P.S.如果有幫助的話,我在Ubuntu 16.04上。

回答

3

您的變量不會在單引號之間擴展。使用雙引號代替:

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

非常感謝!這解決了我的問題。我不敢相信我犯了那個愚蠢的錯誤 –