我需要从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