SED 命令在 Vagrant Init 脚本中不起作用

SED Command not working in Vagrant Init script

我有一个 sed 命令可以定制 httpd.conf 文件并在命令行中完美运行:

sudo sed -i 's/DocumentRoot \"\/var\/www\/html\"/DocumentRoot \"\/var\/www\/html\/web\"/' /etc/httpd/conf/httpd.conf

但是,当作为 config.vm.provision 的一部分包含在 Vagrant 初始化脚本中时,它会失败,如下所示:

default: sed: 
==> default: couldn't open file ww/html"/DocumentRoot "/var/www/html/web"/: No such file or directory
==> default: sed: -e expression #1, char 44: expected newer version of sed
==> default: sed: -e expression #1, char 43: unknown option to `s'

我试过转义,但没有任何效果。我哪里错了?

sed 中,您可以更改 regex substitution 标记。在这里,我将 / 更改为 ~ 以使命令更加清晰。

sed -i 's~DocumentRoot "/var/www/html"~DocumentRoot "/var/www/html/web"~' file