Linux
在獲取整個文件之前關閉傳輸時如何從 curl 獲取正確的錯誤程式碼
我有一個使用代理呼叫 curl 的 bash 腳本。今天下載地址有問題。
呼叫 curl 結束於:
curl: (18) transfer closed with 7512708716 bytes remaining to read
雖然發生了這個錯誤,但返回碼仍然是 200,所以我的腳本“認為”一切都很好。
我怎麼能說 curl 給另一個返回碼而不是 http-200?
錯誤是:
rc=$( curl ... )
這給了我 http 程式碼,因為我填充
$rc
了 curl 的標準輸出。之後我必須填寫rc
。$?
將我的程式碼更改為:
httprc=$( curl ...) rc=$?
我得到了兩個“返回”程式碼。感謝喵!
curl --fail
做你想要的一部分:來自
man curl
:
-f, --fail
(HTTP)在伺服器錯誤時靜默失敗(根本沒有輸出)。這樣做主要是為了更好地使腳本等更好地處理失敗的嘗試。在正常情況下,當 HTTP 伺服器無法傳遞文件時,它會返回一個 HTML 文件來說明這一點(通常還描述了原因等等)。該標誌將阻止 curl 輸出該標誌並返回錯誤 22。
此方法不是萬無一失的,有時會出現不成功的響應程式碼,尤其是在涉及身份驗證時(響應程式碼 401 和 407)。
但它會阻止輸出到螢幕。