我正在测试R(Windows)中的bio3d软件包并遇到一个相当普遍的问题:
bio3d中的“seqaln”函数尝试发出以下系统命令:
#cmd = "muscle -in C:\\Users\\derek\\AppData\\Local\\Temp\\RtmpUSXJCb\\file756f52c9 -out c:/pdb/temp.fas -seqtype protein"
system(shQuote(cmd))
据我所知,没有任何事情发生。但是,一旦我删除了“shQuote”,函数 - seqaln - 按预期工作。所有shQuote都会在命令周围添加一对“”:
"\"C:/_utils/muscle.exe -in C:\\Users\\kfoo\\AppData\\Local\\Temp\\RtmpUSXJCb\\file756f52c9 -out c:/pdb/temp.fas -seqtype protein\""
使用shQuote有什么问题吗?
谢谢!
答案 0 :(得分:3)
问题在于您将shQuote()
应用于包含命令及其参数的字符串。 shQuote()
中没有一个例子可以做到这一点,你也不应该这样做!
以下操作不起作用,原因与直接在Windows \"echo HelloWorld\"
命令行输入时cmd
失败的原因相同:
system(shQuote("echo HelloWorld"))
相反,您应该执行以下操作:
system("echo HelloWorld")
# HelloWorld
或者,如果你的命令及其参数都包含空格,你可以像这样使用shQuote()
:
system(paste(shQuote("echo"), shQuote("HelloWorld")))
# HelloWorld