在ruby中创建一个不断转义字符的字符串是可能的



我需要从Ruby形成一个用户数据脚本,所以我需要保留所有转义字符。当我这样做的时候:

  def user_data
     "#!/bin/bash
     sed -i -e '/<Name>loadbalanceServerIP</Name>/,/<Value>/s/<Value>[^<]*/<Value>1.1.1.1/' /home/wowza/conf/Server.xml"
  end

字符串删除Name标签中的。如果我输入两个,它会同时保留它们。有什么建议,如何保持字符串相同的方式我写它?

谢谢!

您可以使用%q分隔符而不是":

def user_data
     %q[#!/bin/bash
     sed -i -e '/<Name>loadbalanceServerIP</Name>/,/<Value>/s/<Value>[^<]*/<Value>1.1.1.1/' /home/wowza/conf/Server.xml]
end

我将使用heredoc:

def user_data
  <<~'SH'
    #!/bin/bash
    sed -i -e '/<Name>loadbalanceServerIP</Name>/,/<Value>/s/<Value>[^<]*/<Value>1.1.1.1/' /home/wowza/conf/Server.xml
  SH
end
puts user_data

~删除缩进,SH周围的单引号禁用插值和转义。

输出:

#!/bin/bash
sed -i -e '/<Name>loadbalanceServerIP</Name>/,/<Value>/s/<Value>[^<]*/<Value>1.1.1.1/' /home/wowza/conf/Server.xml

最新更新