使用带有json字符串参数的Shell R函数运行

时间:2014-03-06 10:06:28

标签: json string r shell parameters

我有函数,可以使用json字符串。 当我尝试R:

 my_function('{"menu":{"id":"file","value":"File","popup":{"menuitem":[{"value":"New","onclick":"CreateNewDoc()"},{"value":"Open","onclick":"OpenDoc()"},{"value":"Close","onclick":"CloseDoc()"}]}}}')

效果很好。

但是当我尝试使用Shell命令时:

 R -e "source('./my_function.R'); my_function('{"menu":{"id":"file","value":"File","popup":{"menuitem":[{"value":"New","onclick":"CreateNewDoc()"},{"value":"Open","onclick":"OpenDoc()"},{"value":"Close","onclick":"CloseDoc()"}]}}}')"

失败并显示错误:

  

意外字符'm'

似乎,问题在于json字符串中的引号。我该如何解决?

P.S。我需要直接从Shell调用my_function。

谢谢!

2 个答案:

答案 0 :(得分:1)

将主要脚本写为main.r,

source('./my_function.R')
my_function('{"menu":{"id":"file","value":"File","popup":{"menuitem":[{"value":"New","onclick":"CreateNewDoc()"},{"value":"Open","onclick":"OpenDoc()"},{"value":"Close","onclick":"CloseDoc()"}]}}}')"

从命令终端执行,如

Rscript main.r 

请确保配置了R路径。

答案 1 :(得分:0)

你不能像现在这样混合引号。 shell从你的开头双引号读取,直到它找到的第一个双引号(在你的JSON字符串中)。然后它会看到一个m(在菜单中)它无法处理并给出错误信息。