我可以在bash shell中运行此命令。该命令向API请求以压缩图像,并从API获得响应而没有任何问题:
curl https://my.api.com --user api:mypassword --data-binary @/Users/myUsername/MyDirectoryName\ \(abc\)/test/my/file.png --dump-header /dev/stdout
在R脚本中,当我尝试在R的system
(docs)中运行相同命令时,如下所示:
system("curl https://my.api.com --user api:mypassword --data-binary @/Users/myUsername/MyDirectoryName\ \(abc\)/test/my/file.png --dump-header /dev/stdout", intern = T)
我收到一条错误消息:
Error: '\(' is an unrecognized escape in character string starting "curl https://my.api.com --user api:mypassword --data-binary @/Users/myUsername/MyDirectoryName\ \("
我无法控制目录名称及其空格和特殊字符,例如(
和)
。
如何更改传递给system
的命令字符串?如果这是我认为的字符转义问题,我将如何执行转义?
谢谢
答案 0 :(得分:0)
@ zx8754怀疑,转义转义字符应该会有所帮助。特别是\
是转义字符,而(
之类的东西则不需要转义。因此,转义\
应该会有所帮助:
system("curl https://my.api.com --user api:mypassword --data-binary @/Users/myUsername/MyDirectoryName\\ \\(abc\\)/test/my/file.png --dump-header /dev/stdout", intern = T)
以下显示R不再对任何事情感到不满意,并正确打印了字符串:
cat("curl https://my.api.com --user api:mypassword --data-binary @/Users/myUsername/MyDirectoryName\\ \\(abc\\)/test/my/file.png --dump-header /dev/stdout")
# curl https://my.api.com --user api:mypassword --data-binary @/Users/myUsername/MyDirectoryName\ \(abc\)/test/my/file.png --dump-header /dev/stdout