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

标签 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")

谢谢。

最佳答案

你可以逃脱"\" .我也会使用 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/

相关文章:

Bash 目录中的 cat 文件到一个文件中,在内容之前插入文件名

linux - 为什么我很少而不是总是得到 "cat: write error: Broken pipe"

r - 非等连接返回不存在的列名

java - 扫描仪对象错误

mysql - R ODBC MySQL 连接示例

当两个不同的参数中有空格时,C++ system() 不起作用

c++ - 为 C++ 可执行文件提供变量作为 MATLAB 系统命令的输入参数

c - 为什么inbuf = xmalloc(insize + page_size - 1)?

r - Shiny 应用 : Connection Reset By Peer

r - 如何在函数内部使用 rlang::as_string()?