我知道你可以使用"\"来转义特殊字符,但我很有兴趣创建将包含特殊字符的终端命令,这些命令无法很好地读取反斜杠.
作为一个简单的例子,我想要一个看起来像这样的命令:
echo hello "w" or'l'd
Run Code Online (Sandbox Code Playgroud)
这可以通过类似的东西来实现
system(command="""echo hello "w" or'l'd""")
Run Code Online (Sandbox Code Playgroud)
但R不处理三重引号.还有另外一种方法吗?即使从cat()捕获输出也没关系.例如newCommand = cat("echo hello \"w \"orld")
谢谢.
你可以逃脱"用\".shQuote如果您打算运行系统命令,我也会使用.它会照顾相关的逃避...
shQuote( "hello \"w\" orld" , type = "cmd" )
#[1] "\"hello \\\"w\\\" orld\""
Run Code Online (Sandbox Code Playgroud)
您应该知道您在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
Run Code Online (Sandbox Code Playgroud)