我正在尝试用Makel中的perl替换文件中的字符串。
InstallTo = $(PWD)/WebTest
BuildApache:
mkdir -p WebTest
cd Source/httpd; ./configure --prefix=$(InstallTo) --exec-prefix=$(InstallTo)
cd Source/httpd; make; make install
cd $(InstallTo)/conf; perl -pi -e 's/ServerRoot \"$(InstallTo)\"/ServerRoot/g' httpd.conf
cd $(InstallTo)/conf; cp -f httpd.conf httpd.conf.orig
我不确定我到底在做什么,我只是试图修改我在网上发现的perl行。我认为这是“弄糟的事情,但我不太了解Perl来修复它。”
答案 0 :(得分:2)
您可能想尝试:
s|ServerRoot "$(InstallTo)"|ServerRoot|g
您正在使用斜杠粘贴值作为搜索表达式的一部分。它最终成为:
s/ServerRoot \"PWD/WebTest\"/ServerRoot/g
(其中PWD代表任何文字目录规范。)由于你无法逃避斜杠,除非你使用另一个分隔符,否则这总是会有问题。
答案 1 :(得分:0)
由于您的变量包含'/',您需要为正则表达式使用不同的字符,您也可以在具有可包含特殊字符的变量的正则表达式中使用quotemeta或\ Q .. \ E. / p>
s#\QServerRoot "$(InstallTo)"\E#ServerRoot#g
,请参阅此帖子