Lệnh curl shell luôn trả về trạng thái lỗi 0 - ngay cả khi không có lỗi đầu vào


0

Ví dụ: cố gắng tải lên một tệp không tồn tại - curl -d @no-real-file http://google.com | echo $?- trả về 0.

Làm thế nào tôi có thể làm cho curl thất bại về lỗi đầu vào?

Câu trả lời:


2

Bạn có thể dùng curl -f

-f, --fail  (HTTP) Fail silently (no output at all) on server errors. 
This is mostly done to better enable scripts etc to better deal with failed attempts. 
In normal cases when a HTTP server  fails  to  deliver  a  document,  it returns 
an HTML document stating so (which often also describes why and more). This flag 
will prevent curl from outputting that and return error 22.

This method is not fail-safe and there are occasions where non-successful response 
codes will slip through, especially when authentication is involved (response codes 
401 and 407).

Nếu -fđược sử dụng, curlsẽ trả về 22lệnh sau

curl -f -d @no-real-file http://google.com

0

Điều này có thể không chính xác những gì bạn yêu cầu, nhưng bạn chỉ cần kiểm tra nhanh để xem liệu tệp có tồn tại trước đó không:

[ -f $somefile ] && curl -d $somefile blah blah

1
@ No-real-file chỉ là một ví dụ. Tôi nghĩ rằng có thể có các kịch bản khác là tốt.
AlikElzin-kilaka
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.