Так, є спосіб це зробити, але далеко не очевидний, оскільки він включає 3 варіанти завивки:
curl -s --fail --show-error https://httpbin.org/status/200 > /dev/null
curl -s --fail --show-error https://httpbin.org/status/401 > /dev/null
curl -s --fail --show-error https://httpbin.org/status/404 > /dev/null
curl -s --fail --show-error https://bleah-some-wrong-host > /dev/null
Це запевняє, що успіх (0) трапляється лише тоді, коли curl закінчиться з кінцевим 2xx
кодом повернення і stdout
отримає тіло, і що будь-які помилки відображатимуться на stderr.
Зауважте, що документація на curl може вас трохи заплутати, оскільки вона згадує, що --fail може досягти успіху за деякими 401 кодами. На основі тестів, що не відповідає дійсності, принаймні, не одночасно, коли використовується з - show-error.
Поки що мені не вдалося знайти жодного випадку, коли curl поверне успіх, якщо це не http-успіх з цими параметрами.