【问题标题】:jq suppress parsing error for 404 json filesjq 抑制 404 json 文件的解析错误
【发布时间】:2017-11-06 14:50:34
【问题描述】:

echo $(curl -s -u user:pwd "http://site/file.json" | jq -e -r '.data[]?| select(.state == "Active") | if . == null then "安装” elif . == “活动” 然后 “活动” 否则 “安装” 结束')

以下是错误:

解析错误:第 2 行第 0 列的数字文字无效

在 file.json 不存在的情况下,返回 404 页面并且 jq 抛出解析错误。在这种情况下,我想返回字符串“Installing”。尝试了很多东西,但没有任何效果,请帮忙。

【问题讨论】:

  • 如果curl 返回的错误与404 不同,应该打印什么?
  • 期望“安装”也打印所有其他错误。只有当 .data[].state 返回“Acitve”时才应该打印“Active”。
  • 你能发布一个预期的输入 json 结构吗?

标签: shell curl error-handling jq


【解决方案1】:

将响应写入变量:

# -f makes curl return an error in case of HTTP error.
# Check "man curl" on how reliable this is.
response="$(curl -f ...)"
if [ $? -ne 0 ] ; then
    echo "Installing"
else
    jq FILTER <<< "${response}"
fi

【讨论】:

    猜你喜欢
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 2021-05-07
    • 2012-09-27
    • 2018-05-15
    • 2020-06-16
    相关资源
    最近更新 更多