2017-12-01 4 views
2

Ich versuche, durch die Ergebnisse meiner curl Aussage zu durchqueren und dann jede URL löschen, der zurückgegeben wird.Verfahrgeschwindigkeit durch Bash Locken Suchergebnisse

#!/bin/bash 

declare -i Current_Date 
declare -i Three_Months_Ago 

Current_Date=($(date +%s%N)/1000000) 
Three_Months_Ago=(${Current_Date}-7889238000) 

curl -Username:Password "URL/api/search/dates?dateFields=created&from=${Three_Months_Ago}&today&repos=generic-sgca" 

Welche der folgenden zurück:

{ 
    "results" : [ { 
    "uri" : "URL/api/storage/generic-sgca/Lastest_Deploy.tar", 
    "created" : "2017-09-14T11:59:14.483-06:00" 
    }] 

Es gibt mehr als 50 Zeilen wie diese. Jetzt möchte ich einen anderen "-X DELETE" curl-Befehl ausführen können, der jede zurückgegebene URL löscht. Wie zum Beispiel:

URL=curl -Username:Password "URL/api/search/dates?dateFields=created&from=${Three_Months_Ago}&today&repos=generic-sgca" 

curl -Username:Password -X DELETE ${URL} 

Oder so etwas. Wie kann ich das erreichen?

EDIT:

Ich habe das versucht, und es scheint nicht zu funktionieren:

#!/bin/bash 

declare -i Current_Date 
declare -i Three_Months_Ago 

Current_Date=($(date +%s%N)/1000000) 
Three_Months_Ago=(${Current_Date}-7889238000) 

while read -r uri; do 
curl -Username:Password -X DELETE "$uri" 
done < <(
    curl -Username:Password "URL/api/search/dates?dateFields=created&from=${Three_Months_Ago}&today&repos=generic-sgca" | # get the list of uris 
    grep -o "uri" | # filter out everything else 
    tr -d ','  | # remove commas 
    awk '{print $3}' # print just the uri 
    ) 

ich diese erhalte im Gegenzug:

% Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 3225 0 3225 0  0 3225  0 --:--:-- --:--:-- --:--:-- 15140 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
curl: (3) <url> malformed 
+0

Sehen Sie, wie Ihre URIs aussehen, indem Sie zu 'echo curl -Username: Password -X LÖSCHEN" $ uri "' Viel Glück. – shellter

Antwort

1

Ein gemeinsames Bash Idiom zu tun etwas mit einer variablen Anzahl von Eingangsleitungen ist die folgende:

while read -r line; do 
    something_interesting "$line" 

done < <(command) 

Es gibt nicht genug Informationen, das gesamte Skript für Sie hier, aber etwas entlang der Linien von diesem sollte funktionieren und gibt Ihnen einen Ort zu starten, zu schreiben.

+0

Überprüfen OP für Änderungen können nicht herausfinden, wie Code hier posten. Ich habe das versucht und ich kann es nicht zur Arbeit bringen. –

+1

Was bekommen Sie, wenn Sie den inneren curl Aufruf ersetzen mit 'echo'? Das sollte helfen zu beheben, was schief läuft. – Austin