curl: Übergeben Sie eine GET-Anfrage als Argument

curl: Übergeben Sie eine GET-Anfrage als Argument

Heroku hat diesen netten Befehl, der es mir ermöglicht, mit curl eine Datei herunterzuladen, was unter UNIX gut funktioniert:

curl -o latest.dump `heroku pgbackups:url`

Der Befehl in Backticks ergibt eine sehr lange URL, die sich nur schwer in meine Windows CMD-Konsole kopieren/einfügen lässt.

Da Backticks in Windows nicht zu funktionieren scheinen, was ist das Äquivalent in Windows? Bei meiner Recherche zu CMD ging es tief in die Erstellung einer Batchdatei, was meiner Meinung nach für diesen kleinen Zweck übertrieben ist. Das Googeln der Manpages von curl hat nichts ergeben. Das Googeln nach anderen Ressourcen scheint auf die Generierung einer POST-Anforderung hinzudeuten, was hier meiner Meinung nach nicht der Fall ist.

Was ist der entsprechende Befehl in der Windows-CMD? Danke, Sam

Antwort1

Dies ist keine eigene Forschung, sondern entlehnt ausMSDN Blogs.Dort heißt es:

Es gibt keine offensichtliche Möglichkeit, die Ausgabe eines Befehls in eine (...)-Variable einzulesen. In Shells im Unix-Stil geschieht dies durch Backquoting. (...)Der Windows-Befehlsprozessor verfügt nicht über direktes Backquoting, aber Sie können es vortäuschen, indem Sie den FOR-Befehl missbrauchen.

Und hier ist ein Beispiel mit einem solchenfürBefehl, der dem von Unix ähnelt echo `your_command`:

for /f "delims=" %i in ('your_command') do @echo "%i"
  • /faktiviert die folgende Syntax ( help forweitere Informationen finden Sie unter):

    FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
    
  • delim=deaktiviert die Trennung an Leerzeichen

  • @echodruckt den Inhalt der Variable %i, aber der Echo-Aufruf selbst wird unterdrückt ( @)

Antwort2

Wie @Eugen Rieck bereits sagte, schlage ich vor, dass Sie auch ein richtiges Terminal verwenden. Aber zu Ihrer Frage:

  • DerBacktickswerden verwendet, um etwas auszuführen und das Ergebnis inline zu verwenden.auswertenEin Kommando:

    echo `date`
    

    Oder

    echo $(date)
    

    Es wird gedruckt:

    mar jul  1 11:46:42 CDT 2014
    

    In Ihrem Fall versucht es also, herokuden Befehl mit pgbackups:urlals Parameter auszuführen. Sie können sich auf diese Frage beziehen:Batchdateien - So legen Sie die Befehlsausgabe als Variable festalsChristianschlägt in den Kommentaren vor.

  • Und um einen Parameter an eine GETAnfrage zu übergeben, sollten Sie einfach die besagten Parameter an die URL anhängen. Wenn Sie beispielsweise eine Variable mit numberdem Namen „Nummer“ 10und eine Variable mit dem Namen „ text, die enthält“ übergeben möchten "I'm a text", sollte Ihre URL folgendermaßen aussehen:

    "http://example.com/script.php?number=10&text=I'm+a+text"
    

verwandte Informationen