我有以下输入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 中运行该代码块。