我可以在我的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
命令字符串?如果这是一个字符转义问题,我觉得是,我将如何进行逃生?
谢谢
正如@ 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