带有shell命令参数的引号的Ruby字符串?

时间:2012-06-25 18:00:55

标签: ruby string shell escaping

您好我需要像这样创建字符串:

drawtext="fontfile=/Users/stpn/Documents/Video_Experiments/fonts/Trebuchet_MS.ttf:text='content':fontsize=100:fontcolor=red:y=h/2"

我想做点什么

str = Q%[drawtext="fontfile=/Users/stpn/Documents/Video_Experiments/fonts/Trebuchet_MS.ttf:text='content':fontsize=100:fontcolor=red:y=h/2"]

我得到了这个:

=> "drawtext=\"fontfile=/Users/stpn/Documents/Video_Experiments/fonts/Trebuchet_MS.ttf:text='content':fontsize=100:fontcolor=red:y=h/2\"" 

等号后面的转义字符drawtext =“是我想要摆脱的......如何实现呢?

该字符串将在命令行args中使用。

1 个答案:

答案 0 :(得分:4)

与许多语言一样,Ruby需要一种分隔引用引号和封闭引号的方法。

你所看到的是转义字符,它是一种说出 literal 引用而不是语法引用的方式:

foo = 'test="test"'
# => "test=\"test\""

转义字符仅在那里,因为在检查字符串时默认使用双引号。当然,它内部存储为单个字符。您还可以在其他情况下看到这些,例如CR + LF分隔文件行:

"example_line\r\n"

此处\r\n对应于回车符和换行符。 ANSI C中定义了几个这样的字符,这些字符已经包含在许多语言中,包括Ruby和JavaScript。

输出字符串时,不显示转义字符:

puts foo
test="test"