Linux

在獲取整個文件之前關閉傳輸時如何從 curl 獲取正確的錯誤程式碼

  • May 9, 2016

我有一個使用代理呼叫 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)。

但它會阻止輸出到螢幕。

引用自:https://unix.stackexchange.com/questions/280774