Знали, зачем в curl использовать --fail вместе с проверками в скриптах?
Обычный 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 | #совет
Обычный 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 | #совет