R 删除paste0输出中的单个反斜杠

R 删除paste0输出中的单个反斜杠,r,R,是否将输出作为 paste0(" SqlCmd -s sqlserver2 -Q ", "\"BACKUP DATABASE [mydb] TO DISK = '","D:/temp/mydbcopy.bak' ") 但是我希望输出没有反斜杠 " SqlCmd -s sqlserver2 -Q \"BACKUP DATABASE [mydb] TO DISK = 'D:/temp/mydbcopy.bak' " 请帮助。您的代码执行正确的操作 反斜杠实际上不在字符串中,就像周围的引号不在字

是否将输出作为

paste0(" SqlCmd -s sqlserver2 -Q ", "\"BACKUP DATABASE [mydb] TO DISK = '","D:/temp/mydbcopy.bak' ") 
但是我希望输出没有反斜杠

" SqlCmd -s sqlserver2 -Q \"BACKUP DATABASE [mydb] TO DISK = 'D:/temp/mydbcopy.bak' "

请帮助。

您的代码执行正确的操作

反斜杠实际上不在字符串中,就像周围的引号不在字符串中一样。这就是R在终端中显示字符串的方式。要查看实际字符串内容,请使用
消息

" SqlCmd -s sqlserver2 -Q "BACKUP DATABASE [mydb] TO DISK = 'D:/temp/mydbcopy.bak' " "
这还表明您的字符串(可能)当前缺少一个结束字符

作为一般规则,我强烈建议不要使用原始字符串函数构建命令行,因为它容易出错且难以读取。请改用
shQuote
:此函数专门用于确保正确引用参数

x = paste0(" SqlCmd -s sqlserver2 -Q ", "\"BACKUP DATABASE [mydb] TO DISK = '","D:/temp/mydbcopy.bak' ") 
message(x)
在这里,命令行的每个标记(命令本身和所有参数)都是向量中的单个字符串,在连接它们之前,我们依次对它们应用
shQuote
。更好的是,不要自己连接命令,而是将标记按原样传递给
system2
命令以执行它:

cmd_tokens = c("SqlCmd", "-s", "sqlserver2", "-Q", "BACKUP DATABASE [mydb] TO DISK = 'D:/temp/mydbcopy.bak'")
cmd = paste(shQuote(cmd_tokens), collapse = " ")

单反斜杠是CRAN中的转义字符。尝试用双反斜杠替换它?谢谢,Adam。我尝试过,但它显示语法错误谢谢,Konrad。我浪费了太多时间思考为什么会显示反斜杠,但你是对的,当我打印paste0的输出时,我得到了正确的结果。我修复了“结束”问题。非常感谢您的帮助和提供有关shQuote的信息,我会尽力听从您的建议。
args = c("-s", "sqlserver2", "-Q", "BACKUP DATABASE [mydb] TO DISK = 'D:/temp/mydbcopy.bak'")

system2("SqlCmd", args)