Je suis toujours en supposant que lorsque boucle a une réponse HTTP 500 , il retournait un code de sortie qui signifiait l' échec (! = 0), mais qui semble être pas le cas.
Existe-t-il un moyen de faire échouer cURL avec un exitCode différent de 0 si le code d'état HTTP n'est pas 200? Je sais que je peux l'utiliser -w "%{http_code}"
mais cela le met dans STDOUT, non pas comme code de sortie (en outre, je suis également intéressé par la capture de la sortie, que je ne veux pas rediriger vers un fichier, mais vers l'écran).
curl -f -L
et de voir cette question pour plus de détails sur ce-L
fait.Si vous souhaitez simplement afficher le contenu de la page courbée, procédez comme suit:
Ceci écrit le contenu de la page dans STDERR lors de l'écriture du code d'état HTTP dans STDOUT, afin qu'il puisse être affecté à la variable STATUSCODE .
la source
0
code non d' état à partir du script?if [ "$statuscode" -ne 200 ]; then exit "$statuscode"; fi
?{ code=$(curl ... as above ...); } 2>&1
le truc, c'est{ ... } 2>&1
que cela permet de rediriger tout en ne créant pas un shell différent( ... )
.J'ai été capable de le faire en utilisant une combinaison de drapeaux:
curl --silent --show-error --fail URL
--silent masque la progression et l'erreur
--show-error affiche le message d'erreur masqué par
--silent
--fail renvoie un code de sortie> 0 lorsque la demande échoue
la source
--silent --show-error --fail
marche pareil que juste-f/--fail
.--fail
renvoie le code de sortie22
, comme documenté .Oui, il y a un moyen de le faire mais c'est loin d'être évident car cela implique 3 options:
Cela garantit que le succès (0) ne se produit que lorsque curl se termine avec le
2xx
code de retour final , quistdout
obtient le corps et que les erreurs éventuelles sont affichées dans stderr.Veuillez noter que la documentation de curl peut vous confondre un peu car elle mentionne que --fail pourrait réussir pour quelque 401 codes. Basé sur des tests, ce n'est pas vrai, du moins pas lorsqu'il est utilisé avec --show-error en même temps.
Jusqu'à présent, je n'ai pu trouver aucun cas où curl renverrait le succès alors que ce n'était pas un http-succeds avec ces options.
la source