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?

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

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

1
El archivo @ no-real es solo un ejemplo. Creo que también puede haber otros escenarios.
AlikElzin-kilaka
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.