curl shell command sempre retorna status de erro 0 - mesmo quando falha em erros de entrada

0

Exemplo: tentando fazer upload de um arquivo não existente - curl -d @no-real-file http://google.com | echo $? - retorna 0.

Como posso fazer o curl falhar nos erros de entrada?

    
por AlikElzin-kilaka 12.03.2014 / 12:56

2 respostas

2

Você pode usar 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).

Se -f for usado, curl retornará 22 para o seguinte comando

curl -f -d @no-real-file http://google.com
    
por 12.03.2014 / 13:58
0

Isso pode não ser exatamente o que você pediu, mas você pode simplesmente verificar rapidamente se o arquivo existe de antemão:

[ -f $somefile ] && curl -d $somefile blah blah
    
por 12.03.2014 / 13:56