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 comme je le 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?
98
&
symbole avec\&
,'&'
,"&"
,^&
mais ne l' ont pas été en mesure d'obtenir l'URL d'évaluer correctement. En fait, cela'&'
fonctionne lorsque j'exécute la commande curl à partir de Terminal.app, mais échoue lorsque je la place dans un script bash, l'enveloppe dans une boucle et l'exécute.Réponses:
Mettre l'URL entière entre guillemets devrait résoudre votre problème.
la source
${i}
ne renvoie pas de valeur.Utilisez-vous le & comme délimiteur pour une URL GET? Ou est dans un morceau de données?
S'il se trouve dans des données, vous devez l'encoder avec un caractère HTML, sinon, entouré de guillemets.
Le codage pour
&
devrait devenir%26
dans l'URL.la source
&
symbole comme une donnée, presque exactement comme vous l'avez montré. Le hic, c'est que, au lieu des valeurs numériques que j'utilise${i}
. Je veux donc êtrehttp://www.example.com?m=method&args=${i}
évalué en tant qu'URL.Mettre des guillemets simples autour du
&
symbole semble fonctionner. Autrement dit, l'utilisation d'une URL commehttp://www.example.com/page.asp?arg1=${i}'&'arg2=${j}
avec curl renvoie la page Web demandée.la source
Au lieu d'essayer les caractères d'échappement "&", vous pouvez spécifier les paramètres d'url http dans les requêtes POST avec le paramètre -d comme indiqué ci-dessous:
Si la requête est un GET, vous devez également ajouter l'option -G, qui indique à curl d'envoyer les données avec la requête GET.
la source
Vous pouvez utiliser à la
%26
place&
. Le code d'entité fonctionnera correctement.la source
Utilisez le paramètre
--url
avec des guillemets doubles a fonctionné pour moila source