【问题标题】:Using jq to parse JSON in launchd在launchd中使用jq解析JSON
【发布时间】:2014-05-11 21:48:59
【问题描述】:

我有一个 shell 脚本,它评估一个充满 JSON 文件的文件夹,当直接调用时运行良好,但从 launchd 运行时失败。具体来说,launchd 在这一行失败:

current_file_snapshots=$(cat $current_file | jq '.snapshots | length')

因为:

jq: command not found

我查看了 jq 文档来解决这个问题,但没有提到这个问题。我一直无法弄清楚如何让 jq(或任何类似的第三方工具)通过 launchd 工作。

谢谢!

【问题讨论】:

  • 顺便说一句,这表明cat 的使用是无用的。您可以改用输入重定向。 $( jq '.snapshots | length' < $current_file)

标签: json shell sh jq


【解决方案1】:

啊,看来我认为 launchd 与我的普通 bash shell 共享相同的路径。明确说明 JQ 生活的地方似乎可行:

所以在文件的顶部我添加了:

JQ=/usr/local/bin/jq

并将“jq”的所有实例替换为:

$JQ

【讨论】:

    【解决方案2】:

    作为在 Mac OS X 中运行的第一个进程,launchd 没有环境(包括 PATH 参数),除了您在 /etc/launchd.conf 中指定的环境。您可以创建该文件并添加

    setenv PATH "/usr/local/bin"
    

    如果您想要与常规 shell 会话关联的完整环境,您应该将脚本显式地作为登录 shell 执行:

    bash -l myscript.bash
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多