在ruby中,反引号是系统调用,但它们是插值。这很好,因为我可以做到这一点
a = 20.sqrt
`cat #{a}`
但它也很烦人,因为我有时想在我的代码中使用\
,但我需要在\\
内``
,因为它是插值和转义。我怎么能避免这个?
答案 0 :(得分:2)
试试这个
Kernel.`('echo "#{a}"')
逐字打印
#{a}
有趣的是,`
实际上是Kernel
上的一种方法,你可以像任何其他方法一样调用它。因此传递单引号字符串作为参数。
答案 1 :(得分:0)
在非循环上下文中形成字符串并将其插入到反引号中:
s = %{echo "he\ny"}
puts `#{s}`
答案 2 :(得分:-1)
如果您需要使用转义字符,则可以使用%q:
a = 20
system(%Q{echo '#{a}&%$][/\'})
#=> 20&%$][/
如果您想要字符串插值,可以使用%Q:
%q
这里有关于它的thread。请注意,您可以在%Q
和system
之后使用任何分隔符:选择一个不在您的字符串中的分隔符!
我在这里使用了%x{}
而不是n
或刻度线。它们并不等同,但我只是想显示字符串定义,而不会让线条比现在更复杂。