传递命令使用空格/特殊字符R系统命令

问题描述 投票:2回答:1

我可以在我的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 systemdocs)内运行相同的命令,如下所示:

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

谢谢

r regex escaping
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.