Bash查找并替换字符串

时间:2017-07-29 09:38:12

标签: regex bash perl replace quoting

我正在编写一个代码,可以自动更改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上。

1 个答案:

答案 0 :(得分:3)

您的变量不会在单引号之间展开。改为使用双引号:

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