2017-12-01 6 views
2

나는 curl 문의 결과를 탐색 한 다음 반환 된 각 URL을 삭제하려고합니다.Bash 컬 탐색 결과 검색

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

이 같은 50 개 이상의 라인이 있습니다 다음 반환

#!/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" 

. 이제 "-X DELETE"curl 명령을 실행하여 반환 된 각 URL을 삭제할 수 있기를 바랍니다. 예 :

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

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

또는 이와 비슷한 것입니다. 이것을 어떻게 할 수 있습니까?

편집 :

나는 이것을 시도하고 작동하지 않는 것 :

#!/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 
    ) 

내가 수익이 얻을 :

% 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

'echo curl -Username : Password -X DELETE "$ URI로 변경하여 URI가 어떻게 보이는지 확인하십시오. – shellter

답변

1

일반적인 배쉬 관용구을 수행하기위한 다양한 수의 입력 라인이있는 것은 다음과 같습니다 :

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

done < <(command) 

여기에 전체 스크립트를 작성하는 데 필요한 정보가 충분하지는 않지만이 행의 일부는 작동해야하며 시작할 장소를 제공해야합니다.

while read -r uri; do 
    curl_request_to_delete_resource "$uri" 

done < <(
    curl $parameters | # get the list of uris 
    grep -o "uri" | # filter out everything else 
    tr -d ','  | # remove commas 
    awk '{print $3}' # print just the uri 
    ) 
+0

편집을 위해 OP를 확인하십시오. 여기에 코드를 게시하는 방법을 알아낼 수 없습니다. 나는 이것을 시도하고 그것이 작동하도록 할 수 없습니다. –

+1

내부 컬 호출을'echo'로 바꾸면 어떻게됩니까? 그게 잘못된 일이 무엇인지 디버깅하는 데 도움이됩니다. – Austin