curl shell command always returns error status 0 - even when fails on input errors

0

Example: trying to upload a non existing file - curl -d @no-real-file http://google.com | echo $? - returns 0.

How can I make curl fail on input errors?

AlikElzin-kilaka

Posted 2014-03-12T11:56:26.817

Reputation: 1 341

Answers

2

You can use 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).

If -f is used, curl will return 22 for the following command

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

clement

Posted 2014-03-12T11:56:26.817

Reputation: 591

0

This may not be exactly what you asked for, but you could simply do a quick check to see if the file exists beforehand:

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

ZeroKnight

Posted 2014-03-12T11:56:26.817

Reputation: 408

1The @no-real-file is just an example. I think there can be other scenarios as well. – AlikElzin-kilaka – 2014-03-12T23:31:12.213