我有一个 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代码,因为我填充了$rc
curl的标准输出。我必须事后rc
填写$?
。
将我的代码更改为:
httprc=$( curl ...)
rc=$?
我得到了两个“返回”代码。感谢嗯!