我知道你可以使用“\”来转义特殊字符,但我很有兴趣创建将包含特殊字符的终端命令,这些命令无法很好地读取反斜杠。
作为一个简单的例子,我想要一个看起来像这样的命令:
echo hello "w" or'l'd
可以通过类似
的方式实现system(command="""echo hello "w" or'l'd""")
但R不处理三重引号。还有另外一种方法吗?即使从cat()捕获输出也没关系。例如newCommand = cat(“echo hello \”w \“orld”)
感谢。
答案 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'")