118 votes

Comment envoyer de la ligne de rupture avec curl?

J'ai essayé ce qui suit pour envoyer un saut de ligne avec curl, mais \n n'est pas interprété par le roulage.

curl -X PUT -d "my message\n" http://localhost:8000/hello

Comment puis-je envoyer un saut de ligne avec curl?

141voto

Szocske Points 2371

J'ai trouvé une autre solution et je veux juste noter ici pour eneryone l'avenir de référence: Parfois, vous voulez fournir les données à envoyer verbatim. L' --données-option binaire.

68voto

bat Points 5380

À l'aide de JavaScript syntaxe de la chaîne, votre shell est le passage d' "my message\\n" curl plutôt que d' "my message\n". Si vous utilisez bash, utilisez $'my message\n' à la place. Je ne sais pas quoi faire si vous utilisez tcsh.

curl -X PUT -d $'my message\n' http://localhost:8000/hello

J'ai trouvé ceci en cherchant la page de manuel de bash.

Si vous étiez à l'aide de zsh, vous n'auriez pas eu ce problème, echo "1\n2\n3" tirages des retours à la ligne.

17voto

Jammer Points 32

La solution pour quelqu'un qui ne veut pas utiliser les fichiers, et ne veut pas recourir à la coquille s'échapper de la magie est:

curl -X POST --data-binary @- http://url.com <<EOF
line one
line two
EOF

Mais c'est littérale des retours à la ligne dans le post de données de charge utile, et pas dans les champs de formulaire.

10voto

MalcolmOcean Points 1288

(Je me suis retrouvé ici avec une question légèrement différente, donc je vais juste poster ma réponse, car elle pourrait aider les futurs explorateurs)

Ma solution s'applique aux personnes qui sont à l'envoi du formulaire de données de style, c'est à dire des paires clé/valeur dans une chaîne de requête. L'utilisation de l'encodage du saut de ligne, qui est - %A0, tout comme la façon codée de l'espace est - %20. Vous pouvez utiliser http://meyerweb.com/eric/tools/dencoder/ pour convertir d'autres symboles.

Donc, si vous voulez configurer la touche message de la valeur:

line one
another

vous souhaitez envoyer

curl --data "message=line%20one%A0another" http://localhost:8000/hello

2voto

Pekka 웃 Points 249607

Pas de réponse à votre question, mais je tiens à le contourner par la création d'un fichier temporaire contenant le message et saut de ligne, et de donner curl fichier à travailler sur:

curl -X PUT -d @message.txt http://localhost:8000/hello

À partir du manuel:

Si vous commencez les données avec la lettre @, le reste doit être un nom de fichier pour lire les données à partir de, ou - si vous souhaitez curl pour lire les données à partir de stdin. Le contenu du fichier doit déjà être URL-encodé. Plusieurs fichiers peuvent également être spécifiées. La publication des données à partir d'un fichier nommé "foobar" serait donc fait avec --data @foobar.

Prograide.com

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.

Powered by:

X