Обычный curl может завершиться успешно даже тогда, когда сервер вернул HTTP-ошибку:
curl https://example.com/missing
Если сервер ответил
404, команда всё равно может вернуть exit code 0, потому что сетевой запрос технически выполнился.В shell-скриптах это опасно:
curl "$URL" -o app.tar.gz
tar -xzf app.tar.gz
Можно скачать HTML-страницу с ошибкой вместо архива и узнать об этом только на следующем шаге.
Для таких случаев добавляют
--fail:curl --fail "$URL" -o app.tar.gz
Теперь HTTP-коды 400/500 будут считаться ошибкой команды.
Чаще всего это комбинируют с
--silent и --show-error:curl --fail --silent --show-error \
"$URL" -o app.tar.gz
Для CI/CD или deploy-скриптов удобно сразу останавливать выполнение:
curl --fail --silent --show-error "$URL" -o app.tar.gz
tar -xzf app.tar.gz
Если нужен retry:
curl --fail --retry 3 --retry-delay 2 \
"$URL" -o app.tar.gz
Так временные сетевые ошибки можно пережить, а настоящие HTTP-ошибки не будут замаскированы под успешную загрузку.
➡️ DevOps Ready | #совет
