我知道你可以用“\”来转义特殊字符,但我很感兴趣的是创建将进入包含特殊字符的终端的命令,而这些命令不能很好地读取反斜杠。
作为一个简化的例子,我想要一个如下所示的命令:
echo hello "w" or'l'd
这可以通过类似的东西来实现
system(command="""echo hello "w" or'l'd""")
但是 R 不处理三重引号。还有其他方法吗?即使捕获 cat() 的输出也可以。例如newCommand = cat("echo hello\"w\"orld")
谢谢。
最佳答案
你可以逃脱"
与 \"
.我也会使用 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
关于r - 是否有 R 等价于其他语言的三重引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19413790/