是否有R等价的其他语言三重引号?

时间:2013-10-16 20:59:48

标签: r system cat

我知道你可以使用“\”来转义特殊字符,但我很有兴趣创建将包含特殊字符的终端命令,这些命令无法很好地读取反斜杠。

作为一个简单的例子,我想要一个看起来像这样的命令:

echo hello "w" or'l'd

可以通过类似

的方式实现
system(command="""echo hello "w" or'l'd""")

但R不处理三重引号。还有另外一种方法吗?即使从cat()捕获输出也没关系。例如newCommand = cat(“echo hello \”w \“orld”)

感谢。

3 个答案:

答案 0 :(得分:7)

您可以使用"转义\"。如果您打算运行系统命令,我也会使用shQuote。它会照顾相关的逃避......

shQuote( "hello \"w\" orld" , type = "cmd" )
#[1] "\"hello \\\"w\\\" orld\""

你应该知道你在R解释器上看到的内容并不是shell会看到的......例如

paste0( "echo " , shQuote( "hello \"w\" orld" , type = "sh") )
#[1] "echo 'hello \"w\" orld'"

system( paste0( "echo " , shQuote( "hello \"w\" orld" , type = "sh") ) )
#hello "w" orld

答案 1 :(得分:3)

您可以使用单引号:

system(command='echo hello "w" orld')

答案 2 :(得分:0)

库(胶水)

glue('echo hello "w" or{single_quote("l")}d')

OR

glue('echo hello "w" or{l}d', l = "'l'")