2016-06-02 4 views
0

Ich benutze Bash Shell auf Mac Yosemite. Ich habe das Skript followign ...Curl-Skript enthält die "-d" Parameter in meiner URL, aber ich will es nicht

#!/bin/bash 

    curl -u "mysecret:password!" "https://mydomein.org/myproject/oauth/token" -d 'grant_type=client_credentials' 

Als ich das Skript ausführen, erhalte ich die Fehler

davea$ sh curl.sh 
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
    <html><head> 
    <title>404 Not Found</title> 
    </head><body> 
    <h1>Not Found</h1> 
    <p>The requested URL /myproject/oauth/token -d was not found on this server.</p> 
    <hr> 
    <address>Apache/2.2.31 (Amazon) Server at mydomain.org Port 80</address> 
    </body></html> 
    curl: (6) Could not resolve host: grant_type=client_credentials 

Ich habe nicht die „-d“ wollen Teil fo meine URL zu sein, die Deshalb setze ich die Anführungszeichen um die URL, aber ich weiß nicht, wie ich das Skript umschreiben soll, um die URL selbst zu erhalten, und dann das Zeug nach "-d" als param etrs senden.

+1

Von 'man curl':' curl [Optionen] [URL ...] ' – Cyrus

+0

Davon verstehe ich, dass Sie vorschlagen, die Parameter vor der URL zu verschieben, aber das ergibt die URL I in der Anmerkung zur Antwort der anderen Person aufgeführt. – Dave

+0

Überprüfen Sie Ihr Skript mit 'cat -A script' oder' cat -v script' für spezielle nicht druckbare Zeichen. – Cyrus

Antwort

0

Vielleicht versuchen:

curl -u 'mysecret:password!' -d 'grant_type=client_credentials' 'https://mydomein.org/myproject/oauth/token' 

curl --help auf meinem System sagt mir, an der Spitze der langen Hilfeseite direkt:

$ curl --help 
Usage: curl [options...] <url> 

Also ich denke, wenn Sie die HTTP-POST-Daten setzen anstelle der Optionen vor der URL sollte alles gut funktionieren.

+0

Das Ausführen des Skripts führte zum Fehler "curl: (6) Host konnte nicht aufgelöst werden: grant_type = client_credentials" – Dave

2

Während Sie normalerweise Optionen vor der URL setzen würden, besteht curl nicht wirklich auf dieser Verwendung.

Optionen (und im Allgemeinen Befehlszeilenargumente) müssen jedoch durch Leerzeichen getrennt sein, nicht durch typografische Varianten von Leerzeichen (Leerzeichen, Leerzeichen usw.). Viele Textverarbeitungsprogramme werden eingefügt typografische Symbole (einschließlich typografischer Zitate und langer Striche), um Ihre Dokumente schöner aussehen zu lassen. Das ist cool für menschliche Leser, aber es verwirrt im Allgemeinen Software, also sollten Sie diese Funktionen vermeiden, wenn Sie Shell-Skripte und andere Programme bearbeiten.

Versuchen Sie, dieses Skript mit einem Programmiereditor zu bearbeiten; Ich weiß nicht, was Sie auf Ihrem Mac haben könnten, aber es gibt sicherlich etwas, das nicht ändert, was Sie tippen. Oder deaktivieren Sie (normalerweise in "Einstellungen"), welche typografischen Ersetzungen gerade ausgeführt werden und geben Sie die Zeile nur mit Leerzeichen und Bindestrichen ein.

Verwandte Themen