我有函数,可以使用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。
谢谢!
答案 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(在菜单中)它无法处理并给出错误信息。