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.