我运行了curl命令$(curl -i -o - --silent -X GET --cert "${CERT}" --key "${KEY}" "$some_url")
,并将响应保存在变量response中。${response}如下所示:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 34
Connection: keep-alive
Keep-Alive: timeout=5
X-XSS-Protection: 1;
{"status":"running","details":"0"}
我想解析JSON {"status":"running","details":"0"}
并将'running'和'details'分配给两个不同的变量,以便我可以同时打印状态和细节。而且如果状态等于错误,脚本应该退出。我正在尝试以下方法来完成任务 -
status1=$(echo "${response}" | awk '/^{.*}$/' | jq -r '.status')
details1=$(echo "${response}" | awk '/^{.*}$/' | jq -r '.details')
echo "Status: ${status1}"
echo "Details: ${details1}"
if [[ $status1 == 'error' ]]; then
exit 1
fi
我希望只解析一次JSON,而不是两次。因此,我想将以下行合并,但仍将状态和详细信息分配给两个单独的变量 -
status1=$(echo "${response}" | awk '/^{.*}$/' | jq -r '.status')
details1=$(echo "${response}" | awk '/^{.*}$/' | jq -r '.details')
curl
命令是什么样子的?如果你无论如何都要丢弃头信息,那么你可以在第一次请求时就将它们从$response
中省略掉。 - Benjamin W.-i
,就不会获得头文件了。 - Benjamin W.