在获取整个文件之前关闭传输时如何从curl获取正确的错误代码

在获取整个文件之前关闭传输时如何从curl获取正确的错误代码

我有一个 bash 脚本,它使用代理调用curl。今天下载位置有问题。

调用curl 的结果是:

curl: (18) transfer closed with 7512708716 bytes remaining to read

尽管发生此错误,但返回码仍然是 200,因此我的脚本“认为”一切都很好。

我怎样才能说curl给出除http-200之外的另一个返回码?

答案1

curl --fail做你想要的一部分:

man curl:

-f, --fail

(HTTP) 服务器出现错误时静默失败(根本没有输出)。这样做主要是为了更好地启用脚本等来更好地处理失败的尝试。在正常情况下,当 HTTP 服务器无法传递文档时,它会返回一个 HTML 文档来说明情况(通常还描述了原因及更多信息)。该标志将阻止curl 输出该内容并返回错误22。

此方法不是自动防故障的,有时会漏掉不成功的响应代码,特别是在涉及身份验证时(响应代码 401 和 407)。

但它会阻止输出到屏幕。

答案2

错误是:

rc=$( curl ... )

这给了我返回的http代码,因为我填充了$rccurl的标准输出。我必须事后rc填写$?

将我的代码更改为:

httprc=$( curl ...)
rc=$?

我得到了两个“返回”代码。感谢

相关内容