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
我有一个 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