在 vagrant provision 中出现 sed 错误,但在手动执行中正常
sed error in vagrant provision but ok in manual execute
我正在构建一个 Vagrant 项目,它将提供(我用这个词对吗?)带有自定义地图的 Minecraft 服务器。在提供过程中,我不断收到 sed 错误 sed: -e expression #1, char 39: unknown option to 's'
但如果我手动执行 sed 命令,我不会遇到同样的错误。我的代码有什么问题?
流浪文件:
$map_install = <<INLINE_SCRIPT
cd /home/vagrant
cp /vagrant/min.config /home/vagrant/server.properties
sed -i 's/resource-pack=/resource-pack=https:\/\/example.com\/resources.zip/g' server.properties
INLINE_SCRIPT
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision "shell", inline: $map_install, privileged: false
end
server.properties:
#Minecraft server properties
resource-pack=
经过更多研究,我发现 https://
协议 header 以某种方式干扰了原始 sed 脚本,即使我转义了正斜杠。因此,我将 sed 定界符从正斜杠更改为美元符号,从而解决了问题。现在 sed 命令变为:
sed -i 's$resource-pack=$resource-pack=https://example.com/resources.zip$g' server.properties
我正在构建一个 Vagrant 项目,它将提供(我用这个词对吗?)带有自定义地图的 Minecraft 服务器。在提供过程中,我不断收到 sed 错误 sed: -e expression #1, char 39: unknown option to 's'
但如果我手动执行 sed 命令,我不会遇到同样的错误。我的代码有什么问题?
流浪文件:
$map_install = <<INLINE_SCRIPT
cd /home/vagrant
cp /vagrant/min.config /home/vagrant/server.properties
sed -i 's/resource-pack=/resource-pack=https:\/\/example.com\/resources.zip/g' server.properties
INLINE_SCRIPT
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision "shell", inline: $map_install, privileged: false
end
server.properties:
#Minecraft server properties
resource-pack=
经过更多研究,我发现 https://
协议 header 以某种方式干扰了原始 sed 脚本,即使我转义了正斜杠。因此,我将 sed 定界符从正斜杠更改为美元符号,从而解决了问题。现在 sed 命令变为:
sed -i 's$resource-pack=$resource-pack=https://example.com/resources.zip$g' server.properties