如何处理使用jq解析curl响应中的错误

时间:2018-07-26 04:00:08

标签: bash shell curl jq

   local response=response.json
    local status=$(curl -s -w %{http_code} "http://www.google.com" -o $response)

    local name=$(cat $response | jq -r .name)
    local address=$(cat $response | jq -r .address)
    if [ $status  = 200 ] && [ $name = "John" ]; then
       # Process response
    else
       # Error
    fi

我正在使用上述方法处理更多请求。在上述情况下,所有请求均失败

如果URL无效,则response.json不可用。我已经解析了$ response 2次,因此出现2次以下错误

response.json not found, No such file or directory
response.json not found, No such file or directory

如何使用curl和jq更好地处理这些类型的错误?

1 个答案:

答案 0 :(得分:0)

那又怎么样:

if [ $status  = 200 ]; then
  if [ -f $response ]; then
    local name=$(cat $response | jq -r .name)
    if [ $name = "John" ]; then
      local address=$(cat $response | jq -r .address)
      # Process response
    else
      # Error name is not John
    fi
  else
    # Error no response file
  fi
else
   # Error status not 200
fi

您可以添加更多条件-出现键“名称”,出现“地址”,... ...如果您不想处理错误,只需删除else部分