Je suis en train d'essayer de passer la sortie cat
à curl :
$ cat file | curl --data '{"title":"mytitle","input":"-"}' http://api
Mais input
est littéralement un -
.
Je suis en train d'essayer de passer la sortie cat
à curl :
$ cat file | curl --data '{"title":"mytitle","input":"-"}' http://api
Mais input
est littéralement un -
.
Vous devez être conscient que -d
ignore les caractères \n
et \r
. C'est pourquoi j'utilise toujours --data-binary
.
Et si /dev/stdin
fait 25 Mo, comme dans mon cas d'utilisation où j'ai besoin de télécharger un fichier de 25 Mo et que 25 Mo de texte base64 sont trop pour que les arguments bash puissent gérer?
Faites attention à la substitution de chaînes, en particulier pour les données binaires. Cela peut corrompre subtilement vos données (par exemple, supprimer un saut de ligne en fin de ligne ou tout supprimer après un NUL).
Cela fonctionne parfaitement en bash, mais génère une erreur lors de la lecture de /dev/stdin : Erreur d'entrée/sortie
en zsh
Si vous souhaitez saisir/coller les données sans les échapper ni polluer votre historique bash, vous pouvez utiliser ceci :
cat | curl --json @- https://api.example/
L'option --json
a été ajoutée dans v7.82.0, donc si votre version est plus ancienne, utilisez ceci :
cat | curl --header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data @- \
https://api.example/
Ces commandes vous placent dans un cat
interactif où vous pouvez saisir directement les données, par exemple avec Shift + Insert. Vous terminez avec un retour à la ligne et un Ctrl + D (caractère End-of-Transmission), ce qui signale à cat
que vous avez terminé. Ces données sont ensuite transmises à curl
, et vous avez une entrée d'historique réutilisable.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Je ne suis pas sûr s'il y a un format spécial ici, sinon voici ce que vous voulez peut-être : serverfault.com/questions/313599/…