Ich versuche, Curl in Bash zum Herunterladen einer Webseite zu verwenden, aber das &
Symbol in der URL wird nicht wie gewünscht als Zeichen interpretiert. Irgendwelche Ideen, wie ich bash davon überzeugen kann, dass das Symbol &
nur ein langweiliger Charakter und nichts Besonderes ist?
97
&
mit dem Symbol\&
,'&'
,"&"
,^&
haben aber nicht die URL bekommen konnten richtig zu bewerten. Eigentlich'&'
funktioniert das, wenn ich den Befehl curl über Terminal.app ausführe, aber wenn ich ihn in ein Bash-Skript einfüge, in eine Schleife einwickle und ausführe, schlägt dies fehl.Antworten:
Wenn Sie die gesamte URL in doppelte Anführungszeichen setzen, sollte sich Ihr Problem beheben.
quelle
${i}
keinen Wert zurück.Verwenden Sie das & als Trennzeichen für eine GET-URL? Oder ist in einem Datenelement?
Wenn es sich um Daten handelt, müssen Sie es in ein HTML-Zeichen codieren. Wenn nicht, umgeben Sie es mit Anführungszeichen.
Die Codierung für
&
sollte%26
in der URL enthalten sein.quelle
&
Symbol als Datenelement, fast genau so, wie Sie es gezeigt haben. Der Haken ist, dass ich anstelle von numerischen Werten verwende${i}
. Ich möchte alsohttp://www.example.com?m=method&args=${i}
als URL auswerten.Das Anführungszeichen um das
&
Symbol zu setzen scheint zu funktionieren. Das heißt, wenn Sie eine URL wiehttp://www.example.com/page.asp?arg1=${i}'&'arg2=${j}
mit curl verwenden, wird die angeforderte Webseite zurückgegeben.quelle
Anstatt die Escape-Zeichen "&" zu versuchen, können Sie http-URL-Parameter in POST-Anforderungen mit dem Parameter -d wie folgt angeben:
Wenn es sich bei der Anforderung um ein GET handelt, sollten Sie auch die Option -G hinzufügen, mit der curl angewiesen wird, die Daten mit der GET-Anforderung zu senden.
quelle
Sie können
%26
stattdessen verwenden&
. Der Entitätscode funktioniert einwandfrei.quelle
Verwenden Sie den Parameter
--url
mit doppelten Anführungszeichen, die für mich gearbeitet habenquelle