Bash 查找并替换字符串
Bash find and replace string
我正在编写一个代码,可以自动更改 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) 的旧 IP。
但是,如果我尝试
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.
您的变量没有在单引号之间展开。改为使用双引号:
sudo perl -pi -e "s/${oldIP}/${newIP}/g" /etc/nginx/conf.d/${oldIP}.conf
我正在编写一个代码,可以自动更改 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) 的旧 IP。
但是,如果我尝试
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.
您的变量没有在单引号之间展开。改为使用双引号:
sudo perl -pi -e "s/${oldIP}/${newIP}/g" /etc/nginx/conf.d/${oldIP}.conf