El comando curl shell siempre devuelve el estado de error 0, incluso cuando falla en los errores de entrada

0

Ejemplo: intentar cargar un archivo no existente - curl -d @no-real-file http://google.com | echo $?- devuelve 0.

¿Cómo puedo hacer que el rizo falle en los errores de entrada?

AlikElzin-kilaka
fuente

Respuestas:

2

Puedes 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).

Si -fse usa, curlregresará 22para el siguiente comando

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

Puede que esto no sea exactamente lo que solicitó, pero simplemente puede hacer una comprobación rápida para ver si el archivo existe de antemano:

[ -f $somefile ] && curl -d $somefile blah blah
ZeroKnight
fuente
1
El archivo @ no-real es solo un ejemplo. Creo que también puede haber otros escenarios.
AlikElzin-kilaka