You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用curl -f参数时,如何在非200状态码下显示响应体并返回错误?

解决curl异常状态码下既返回错误又显示响应体的问题

方法一:使用--fail-with-body参数(推荐)

从curl 7.76.0版本开始,新增了--fail-with-body参数,它的作用和-f(--fail)一致——当HTTP响应状态码为4xx或5xx时让curl返回非零退出码,但会同时输出响应体内容。

直接替换原有-f参数即可:

curl --fail-with-body https://example.com/api/endpoint

若请求返回4xx/5xx状态码,curl会返回非零值,同时将响应体打印到终端。

方法二:兼容旧版本curl的脚本方案

如果你的curl版本低于7.76.0,无法使用上述参数,可以通过脚本捕获响应内容与状态码,手动判断并返回对应退出码:

#!/bin/bash
# 捕获响应内容和末尾追加的状态码
response=$(curl -w "\n%{http_code}" https://example.com/api/endpoint)
# 分离响应体和状态码
body=$(echo "$response" | sed '$d')
status_code=$(echo "$response" | tail -n1)

# 打印响应体
echo "$body"

# 判断状态码是否为异常(4xx/5xx),是则返回非零值
if [[ "$status_code" =~ ^[45][0-9]{2}$ ]]; then
    exit 1
fi

该脚本会先保存包含状态码的完整响应,分离出响应体和状态码后先打印内容,再根据状态码决定是否返回错误退出码。如果需要去除curl的进度输出,可在curl命令中添加-s参数。

内容的提问来源于stack exchange,提问作者PeaceSheep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 18:42:01