2

我正在使用 Capistrano 进行部署,我需要运行一个命令来在服务器上的 .htaccess 文件中设置正确的环境。

我这样做是sed这样的:run "sed -i -r 's/APPLICATION_ENV \w+/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"

我的问题是\w+Ruby/Cap 转义了 regexp 最终尝试匹配 only w+。如果我使用\\w+我最终会得到一个尝试匹配的正则表达式\\w+

我怎样才能有一个内插的双引号字符串并成功转义\w?我真的需要更改为单引号字符串和变量的连接吗?

4

1 回答 1

1

在我的系统上,您的示例有效,但您可以尝试使用这两个之一(注释掉您不使用的那些)

begin
  stage = "stage"
  current_release = "current_release"
  s = "sed -i -r 's/APPLICATION_ENV \\w+/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"
  s = "sed -i -r 's/APPLICATION_ENV #{"\\w+"}/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"
  s = "sed -i -r 's/APPLICATION_ENV #{92.chr}w+/APPLICATION_ENV #{stage}/' #{current_release}/public/.htaccess"
  puts s
  system s
rescue 
  puts $! 
  system('pause') 
end 
于 2012-08-13T11:05:13.067 回答