我正在编写一个代码,可以自动更改VestaCP面板的IP。 我需要代码用新变量$ newIP替换变量$ oldIP,所以我写了这段代码。
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上。
答案 0 :(得分:3)
您的变量不会在单引号之间展开。改为使用双引号:
sudo perl -pi -e "s/${oldIP}/${newIP}/g" /etc/nginx/conf.d/${oldIP}.conf