動態修改模板檔案並使用curl 將其發佈到伺服器?

動態修改模板檔案並使用curl 將其發佈到伺服器?

我有以下輸入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 中執行該程式碼區塊。

相關內容