[英]Loop through list for curl requests in bash
我有一個 bash 腳本,它發送一個 curl 請求並顯示響應。
#!/bin/bash
token=$(curl -k -X GET \
'https://v.mytesting.io/oauth/token?grant_type=password&username=user1&password=123' \
-H 'Authorization: Basic 12345678' \
-H 'Host: v.mytesting.io.io')
v=$( jq -r ".access_token" <<<"$token" )
ts=$(curl -k -X POST \
https://timeseries.mytimeseries.io/v5/time_series/query \
-H 'Authorization: Bearer '"$v" \
-H 'Content-Type: application/json' \
-H 'Host: timeseries.mytimeseries.io' \
-H 'tenant: 123-123-123' \
-d '{"operation" : "raw","responseFormat" : "kairosDB","startTime": "1d-ago","stopTime": "now","tagList" : [ {"tagId" : "V.S.23164117.AVG.10M"}]}')
p=$(jq '.queries[].sample_size, .queries[].results[].name' <<<"$ts")
echo "$p"
我當前的 output 只是一個值和 tagId 的名稱。 我的查詢只允許 1 個 tagId(您可以在上面看到)
我希望能夠設置 tagId 的列表。 然后,當我運行此腳本時,它應該遍歷 tagId 的列表並執行 curl 請求,用列表中的每個值替換 VS23164117.AVG.10M。 然后 output 將整個結果列表放入一個文件中。
列表會是這樣 - (我希望能夠將此列表輸入到單獨的文件中,並且 bash 腳本調用該文件。有時此列表可能有幾百行。
output 想這樣看。
感謝您的任何幫助
您可以使用小腳本遍歷標簽列表。 我不是 100% 干凈的 output 格式。 您可以更改“回聲”以匹配所需的格式。
請注意對引號的細微更改以允許在正文中進行變量擴展。
標簽將存儲在一個文件中,例如 tags.txt
V.S.23164117.AVG.10M
V.S.23164118.AVG.10M
V.S.23164119.AVG.10M
腳本將使用該文件
#! /bin/bash
# Use user defined list of tags
tags=tags.txt
token=$(curl -k -X GET \
'https://v.mytesting.io/oauth/token?grant_type=password&username=user1&password=123' \
-H 'Authorization: Basic 12345678' \
-H 'Host: v.mytesting.io.io')
v=$( jq -r ".access_token" <<<"$token" )
for tag in $(<$tags) ; do
ts=$(curl -k -X POST \
https://timeseries.mytimeseries.io/v5/time_series/query \
-H 'Authorization: Bearer '"$v" \
-H 'Content-Type: application/json' \
-H 'Host: timeseries.mytimeseries.io' \
-H 'tenant: 123-123-123' \
-d '{"operation" : "raw","responseFormat" : "kairosDB","startTime": "1d-ago","stopTime": "now","tagList" : [ {"tagId" : "'"$tag"'"}]}')
p=$(jq '.queries[].sample_size, .queries[].results[].name' <<<"$ts")
echo "$tag $p"
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.