![진행률 = 100% 또는 상태 = 완료인 경우에만 다음 cURL 문을 계속 실행하고, 그렇지 않으면 100%에 도달할 때까지 기다립니다.](https://linux55.com/image/174375/%EC%A7%84%ED%96%89%EB%A5%A0%20%3D%20100%25%20%EB%98%90%EB%8A%94%20%EC%83%81%ED%83%9C%20%3D%20%EC%99%84%EB%A3%8C%EC%9D%B8%20%EA%B2%BD%EC%9A%B0%EC%97%90%EB%A7%8C%20%EB%8B%A4%EC%9D%8C%20cURL%20%EB%AC%B8%EC%9D%84%20%EA%B3%84%EC%86%8D%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B3%A0%2C%20%EA%B7%B8%EB%A0%87%EC%A7%80%20%EC%95%8A%EC%9C%BC%EB%A9%B4%20100%25%EC%97%90%20%EB%8F%84%EB%8B%AC%ED%95%A0%20%EB%95%8C%EA%B9%8C%EC%A7%80%20%EA%B8%B0%EB%8B%A4%EB%A6%BD%EB%8B%88%EB%8B%A4..png)
cURL 코드를 자동화하려고 합니다. 이 단계에서 멈췄으며 계속하려면 백분율Complete = 100% 또는 상태 = 완료인지 확인해야 합니다. 여기는 i/p입니다 -
curl -XGET -H 'X-API-TOKEN: xxxxxxxxxxxxxxxxxxxx' -H 'Content-Type: application/json' https://xx1.qualtrics.com/API/v3/surveys/XX_XXXXXXXXXXX/export-responses/XX_XXXXXXXXX
이것은 출력입니다 -
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 188 100 188 0 0 541 0 --:--:-- --:--:-- --:--:-- 540{"result":{"fileId":"xxx-xxx-xxx-xxx-xxx","percentComplete":100.0,"status":"complete"},"meta":{"requestId":"xxx-xxx-xxx-xxx-xxx","httpStatus":"200 - OK"}}
나는 정규식을 사용하여 상태를 추출하고 아래와 같이 "전체"와 비교해 보았습니다.
while [$(curl -XGET -H 'X-API-TOKEN: xxxxxxxxxxxxxxxxxxxx' -H 'Content-Type: application/json' https://xx1.qualtrics.com/API/v3/surveys/XX_XXXXXXXXXXX/export-responses/XX_XXXXXXXXX | sed -E -n 's/.*status":"([a-z]+).+/\1/p')!= "complete"];
do sleep 5s;
done
답변1
나는 의견의 제안을 사용하여 나에게 도움이 되는 다음을 만들었습니다. 참고 - $VAR은 여기서 사용한 이전 명령의 출력입니다.
VAR2="$(curl -f -XGET -H 'X-API-TOKEN: XXXXXXXXX' -H 'Content-Type: application/json' https://xxx.qualtrics.com/xx_xxxxxxx/export-responses/"$VAR" | sed -E -n 's/.*status":"([a-z]+).+/\1/p')"
echo $VAR2
#sleep 10s
a=1
while [ $a = 1 ]
do
if [ $VAR2 != 'complete' ]
then
VAR2="$(curl -f -XGET -H 'X-API-TOKEN: xxxxxxxxxxxx' -H 'Content-Type: application/json' https://xx.qualtrics.com/xxxxxxxxx/export-responses/"$VAR" | sed -E -n 's/.*status":"([a-z]+).+/\1/p')"
sleep 3s
else
a=`expr $a + 2`
fi
done