使用jq解析launchd中的JSON

时间:2014-05-11 21:48:59

标签: json shell sh jq

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

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

由于:

jq: command not found

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

谢谢!

2 个答案:

答案 0 :(得分:4)

啊,看起来我认为launchd与我的普通bash shell共享相同的PATH。明确说明JQ生活的地方似乎有效:

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

JQ=/usr/local/bin/jq

并替换了' jq'的所有实例。用:

$JQ

答案 1 :(得分:1)

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

setenv PATH "/usr/local/bin"

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

bash -l myscript.bash