我有以下輸入temp.txt
文件,我需要使用curl 發布它 -
{
"query":"\n{\n data(clientId: 1234, filters: [{key: \"o\", value: 100}], key: \"world\") {\n title\n type\n pottery {\n text\n pid\n href\n count\n resource\n }\n }\n}"
}
以下是我如何取得檔案並將其發佈到伺服器的方式。一切正常,沒有任何問題。
curl 'url' \
-H 'Accept-Encoding: gzip, deflate, br' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Connection: keep-alive' -H 'DNT: 1' \
-H 'Origin: url' \
--data-binary "@/Users/david/Downloads/temp.txt" \
--compressed \
--silent \
--output /dev/null \
--write-out '%{http_code}'
現在我正在嘗試發布多個捲曲請求,clientId's
如上面的文件所示temp.txt
。我有大約 10 個不同的clientId's
,我想為每個不同的 json 發布相同的 json clientId
。
有什麼方法可以使這個足夠通用,以便它可以clientId's
從其他文件中讀取,clientIds.txt
例如,該文件將包含所有列表clientId's
,然後它可以將每個 json 發佈clientId
到伺服器?
我可以將clientIds.txt
文件中的內容設定為 -
1234
9812
6751
2181
現在我應該為每個文件製作這樣的 jsonclientId
並將其發佈到伺服器。這有可能做到嗎?我可以將temp.txt
文件作為模板,其中clientId
可以從文件填充字段clientIds.txt
,然後我們可以將其發佈到伺服器,但我不確定如何在 shell 腳本中執行此操作?
客戶 ID:9812
{
"query":"\n{\n data(clientId: 9812, filters: [{key: \"o\", value: 100}], key: \"world\") {\n title\n type\n pottery {\n text\n pid\n href\n count\n resource\n }\n }\n}"
}
客戶 ID:6751
{
"query":"\n{\n data(clientId: 6751, filters: [{key: \"o\", value: 100}], key: \"world\") {\n title\n type\n pottery {\n text\n pid\n href\n count\n resource\n }\n }\n}"
}
客戶 ID:2181
{
"query":"\n{\n data(clientId: 2181, filters: [{key: \"o\", value: 100}], key: \"world\") {\n title\n type\n pottery {\n text\n pid\n href\n count\n resource\n }\n }\n}"
}
更新
我在 bash 腳本中嘗試了類似的操作,但我無法使其工作,因為我對一些事情感到困惑。如何替換每個 clientId 的模板 json 文件,然後使用 curl 將該 json 發佈到伺服器 -
while IFS= read -r line; do
# this below line isn't working
cat temp.txt | sed 's/clientId:[^ ]*/clientId:$line/'
# and how should I use new json to post curl
done < clientIds.txt
答案1
您可以建立一個循環遍歷該清單的 bash 檔案:
#!/bin/bash
for word in $(< clientIds.txt)
do
echo "curl $word"
done
將該命令替換echo curl
為您的工作curl命令,但是$字變數是下一個客戶端ID為了
或直接在 cli 中執行該程式碼區塊。