【问题标题】:run from Shell R function with json string parameter从带有 json 字符串参数的 Shell R 函数运行
【发布时间】:2014-03-06 10:06:28
【问题描述】:

我有函数,它适用于 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 字符串中的引号。我该如何解决?

附:我需要直接从 Shell 调用 my_function。

谢谢!

【问题讨论】:

    标签: json string r shell parameters


    【解决方案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 路径。

    【讨论】:

    • 我知道,还有其他方法可以运行函数:例如我可以从 json 文件中读取。但不幸的是,我需要直接从 Shell 运行 my_function。
    • 如果不是保密的,你能把你的函数定义给我吗,这样我就可以试试,让你知道?
    • 其实这个函数很复杂,因为要和数据库等函数一起工作。您可以通过编写简单的函数来尝试:my_function
    【解决方案2】:

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

    【讨论】:

    • 我明白,但也许有什么办法可以解决这个问题?
    • @Nachiket 的答案中的方式对您来说不是一种可能性吗?
    • 很遗憾没有。有很多可能性。但我需要直接从 Shell 运行 my_function
    • 尝试转义双引号\"
    猜你喜欢
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 2011-09-08
    • 2021-11-23
    • 1970-01-01
    • 2015-07-03
    相关资源
    最近更新 更多