web-dev-qa-db-fra.com

Comment inclure un caractère '&' dans une déclaration bash curl

J'essaie d'utiliser curl in bash pour télécharger une page Web, mais le symbole & Dans l'URL n'est pas interprété comme un caractère comme je le voudrais. Des idées sur la façon dont je peux convaincre Bash que le symbole & Est juste un caractère ennuyeux et rien de spécial?

81
Chernoff

Mettre des guillemets simples autour du symbole & Semble fonctionner. Autrement dit, utiliser une URL telle que http://www.example.com/page.asp?arg1=${i}'&'arg2=${j} Avec curl renvoie la page Web demandée.

20
Chernoff

Mettre l'URL entière entre guillemets devrait résoudre votre problème.

97
mjuarez
curl "http://www.example.com?m=method&args=1"

Utilisez-vous le & comme délimiteur pour une URL GET? Ou est dans une donnée?

S'il s'agit de données, vous devez l'encoder en caractère HTML, sinon, entourez-le de guillemets.

Le codage pour & devrait devenir %26 dans l'URL.

curl "http://www.example.com?m=this%26that
33
Matt Clark

Au lieu d'essayer les caractères d'échappement "&", vous pouvez spécifier les paramètres d'URL http dans POST demandes avec le paramètre -d comme indiqué ci-dessous:

curl -X POST http://www.example.com \
-d arg1=this \
-d arg2=that

Si la requête est une requête GET, vous devez également ajouter l'option -G, qui indique à Curl d'envoyer les données avec la requête GET.

curl -X GET -G http://www.example.com \
-d arg1=this \
-d arg2=that
13
noego

Vous pouvez utiliser %26 au lieu &. Le code d'entité fonctionnera bien.

6
Seralto