TGViewer
DevOps Ready | IT DevOps Ready | IT @devops_ready · 7.65K subscribers
Post #1349 500
Знали, почему jq без -e может пропустить неготовый сервис?

Допустим, проверка здоровья возвращает JSON с признаком готовности:
{"ready": false}


В скрипте хочется прочитать поле и продолжить работу только после готовности. Кажется логичным проверить статус команды:
jq '.ready' health.json
echo "$?"


jq напечатает false, но сама команда успешно обработала JSON и завершится с кодом 0. Если использовать её напрямую в if, скрипт ошибочно пойдёт по ветке успеха.

Для проверки результата добавьте -e:
jq -e '.ready' health.json >/dev/null
echo "$?"


Теперь false или null дают ненулевой код. Но любой другой результат, в том числе число 0 или непустая строка, считается успешным. Поэтому для строгой проверки булевого поля лучше сравнить его с true:
if jq -e '.ready == true' health.json >/dev/null; then
echo "service is ready"
else
echo "service is not ready" >&2
exit 1
fi


Если поле отсутствует, выражение тоже вернёт false. А если JSON сломан, jq завершится с ошибкой разбора, и скрипт не примет его за успешный ответ.

➡️ DevOps Ready | #совет
  • ❤ 2
  • 🔥 2
  • 👍 1
More from @devops_ready
  1. Oct 6, 2026На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранени…
  2. Oct 6, 2026📂 Напоминалка по единообразию Dockerfile в команде! Единые правила помогают сократить кол…
  3. Oct 5, 2026Изоляция процессов в Linux через Unshare без Docker и тяжелых утилит. Мы научимся использо…
  4. Oct 5, 2026Как оплачивать зарубежные сервисы в 2026 году? Можно бегать между посредниками и бояться б…
  5. Oct 5, 2026DigitalOcean Community собирает подробные руководства по Linux! В разделе Linux Basics ест…
  6. Oct 2, 2026Знали, почему настройки systemd-сервиса лучше менять через systemctl edit? Допустим, прило…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →