2017-01-19 7 views
0

Ich habe das folgende Skript:Schleife durch CURL Ergebnisse

  1. Schleife durch eine dynamisch wachsende Liste der Ergebnisse aus der scans.io curl:

    #!/bin/bash 
    for line in $('curl -s https://scans.io/data/rapid7/sonar.http/20141209-http.gz | zcat | head -n 1000 | dap json + select vhost + lines'); 
    do 
        echo "$line\n" 
    done 
    

    Für welche ich folgendes zu erreichen versuche,

  2. Output die Linie, die ich dann vorschlagen, PHP passieren

jedoch zu speichern und zu verarbeiten I bekomme syntax error near unexpected token $ '\ r''' aber bin kein BASH-Experte, um zu wissen, was ich optimieren muss.

+0

die einfachen Anführungszeichen – ceving

+0

entfernen, wenn Sie mehr tun, als nur die Linie im Körper hallt, brauchen Sie nicht die Schleife überhaupt, nur die Ausgabe der 'dap' direkt an PHP. – chepner

Antwort

2

Verwenden Sie Process-Substitution, mit einer While-Schleife, siehe . Die Unscharfschaltung von IFS und read mit dem Flag -r ermöglicht Backslashes nicht, um beliebige Zeichen zu umgehen und Strings "wie besehen" zu behandeln.

#!/bin/bash 

while IFS= read -r line 
do 
    echo "$line\n" 
done < <(curl -s https://scans.io/data/rapid7/sonar.http/20141209-http.gz | zcat | head -n 1000 | dap json + select vhost + lines) 
+0

Vielen Dank für Ihre Antwort. Ich fand, dass ich es auch tun konnte, indem ich den Befehl wie in http://stackoverflow.com/questions/2711001 – Antony

+0

@Antony vorgeschlagen: _Always_ benutze Werkzeuge/Vorschläge, die von der gebürtigen Muschel verfügbar sind, anstatt abhängig von den Werkzeugen von Drittanbietern für das Gründe der Portabilität. Der von mir vorgeschlagene Ansatz ist zuverlässiger. – Inian

+0

Mit Rohrleitungen als drittes Element? – Antony

Verwandte Themen