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