动态修改模板文件并使用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 中运行该代码块。

相关内容