Я запускаю команду 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')