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?
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.
Mettre l'URL entière entre guillemets devrait 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 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
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
Vous pouvez utiliser %26
au lieu &
. Le code d'entité fonctionnera bien.