【发布时间】:2022-01-17 23:28:12
【问题描述】:
我正在研究 shell 脚本,但遇到了一个问题。
我必须监控一个以 JSON 格式返回给我响应的 API URL。以下是此响应的示例:
{
"Result": 0,
"ExecutionTime": 0,
"Items": [
{
"item1": "x",
"item2": x,
"item3": x,
"item4": x,
"genre1": x,
"genre2": x,
"item5": x,
"item6": x,
"desc": {
"por": {
"name": "santa-claus",
"item7": "xxxx",
}
}
}
]
}
问题是我需要 curl 命令返回给我三个参数:1.“名称”(在 json 响应中),2.http 代码和 3.时间响应。例如,我希望是这样的:
santa-claus #from json extract
200 #http code
347ms #time response
我正在使用 shell 脚本,而我现在拥有的是这个 curl 命令:
curl -X "GET" -w "%{http_code}\n" "https://my-api-url-here&compress=true" | jq -r '.Items[] | .descs.por.name'`
这是返回给我这个错误:
curl: (3) <url> malformed
jq: error (at <stdin>:1): Cannot index number with string "Items"
santa-claus
“jq”部分是正确的,如果我在没有“-w”%{http_code}\n“”的情况下执行此 curl,则一切正常。但正如我所说,我需要这三个回应...... 关于时间响应,我读过一些关于“%{time_starttransfer}”的内容,但我不知道如何在我的 curl 命令中应用它...
这是一种方法吗?
【问题讨论】: