【发布时间】:2018-11-27 22:01:40
【问题描述】:
我运行 curl 命令$(curl -i -o - --silent -X GET --cert "${CERT}" --key "${KEY}" "$some_url") 并将响应保存在变量响应中。 ${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"} 并将“运行”和“详细信息”分配给两个不同的变量,我可以在其中打印状态和详细信息。此外,如果状态等于错误,脚本应该退出。我正在做以下事情来完成任务-
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之外。 -
上面添加了 curl 命令
-
如果你删除
-i,你将不会得到标题。