在shell脚本中使用jq

时间:2014-07-05 02:03:32

标签: json macos bash shell

怀疑这是我正在制作的新手错误,但是试图解析json,例如

{"current_observation": {"observation_time": "Last Updated on July 4, 12:53 PM CDT" } }

来自

等脚本
#!/bin/sh

jq '.' test.json

我从./test.sh收到错误回复,如下所示

syntax error, unexpected INVALID_CHARACTER, expecting $end '.'1 compile error

现在,如果我做了一个jq'。'来自终端命令行的test.json,它按预期执行,但是当尝试在脚本中使用它时,它会失败。

任何人都能指出我的错误吗?

2 个答案:

答案 0 :(得分:2)

我可以使用此脚本重现您的错误:

#!/bin/sh   
jq \'.\' test.json

我认为你只需要摆脱.周围的引号,虽然它对我来说没有未转义的引号。

尝试就像这样:

#!/bin/sh   
jq . test.json

这可能与jq的bug report有关。 (虽然可能不是因为它在命令行上适合你)

答案 1 :(得分:0)

逗号产生错误。你应该引用它:

{"current_observation": {"observation_time": "Last Updated on July 4\u002c 12:53 PM CDT" } }

测试:

$ jq '.' temp.txt 
{
  "current_observation": {
    "observation_time": "Last Updated on July 4, 12:53 PM CDT"
  }
}