Comment inclure un caractère ‘&’ dans une déclaration de bash curl

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

La mise en place de l’URL entière entre guillemets devrait permettre de résoudre votre problème.

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

Utilisez-vous le & comme délimiteur pour une URL GET? Ou est dans un morceau de données?

Si c’est dans les données, vous devez le coder pour un 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 

Mettre des guillemets simples autour du symbole & semble fonctionner. Autrement dit, l’utilisation d’une URL comme http://www.example.com/page.asp?arg1=${i}'&'arg2=${j} avec curl renvoie la page Web demandée.

Au lieu d’essayer les caractères d’échappement “&”, vous pouvez spécifier les parameters d’URL http dans les requêtes POST 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 un GET, vous devez également append 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 

Vous pouvez utiliser %26 place & . Le code d’entité fonctionnera correctement.