我正在设置一个shell脚本来为我处理curl请求。
在我可以使用数据参数循环以下所有POST请求之前,API需要一个OPTION请求。
任何人都知道我如何改进我的代码和语法,以使OPTIONS请求发生一次,然后循环POST请求。
感谢任何指针。
我查看了有关SH的不同文档,浏览了很多SO页面,但到目前为止还没有运气
#!/bin/bash
url="https://www.google.com"
options="$(curl -s -X OPTIONS "$url"-H "Accept: */*" -H "Access-Control-Request-Headers: authorization,content-type" -H "Access-Control-Request-Method: POST" -H "DNT: 1" -H "Origin: https://google.com" -H "User-Agent: Generic" -H "cache-control: no-cache")"
for options
do echo "$options" >> outputposts1.csv 2>&1
done
for id in $(< idt.txt);
do
posts="$(curl -v -s -m 5 -X POST -H "Accept: */*" -H "Authorization: long.auth.key" -H "Content-Type: application/json" -H "DNT: 1" -H "Origin: https://google.com" -H "User-Agent: Generic" -H "cache-control: no-cache" "$url" -d '{"profileid": "'"$id"'","content": "json content","programId": "numbers" \n')"
echo "$posts" >> outputposts2.csv 2>&1
sleep 1s
done
OPTIONS请求的状态应该为200,随后的POST请求的状态代码应为201。
答案 0 :(得分:0)
我自己解决了这个问题 基本上,我使用shellcheck来给我指针o语法错误,并发现我在“ $(curl)”中有一个,而json括号未正确关闭,并发现了以下语法
#!/bin/bash
url="https://www.google.com"
options="$(curl -s -X OPTIONS "$url"-H "Accept: */*")"
for options
do echo "$options"
done
for id in $(< idt.txt);
do
posts="$(curl -v -s -m 5 -X POST -H "Accept: */*" "$url" -d '{"profileid": "'"$id"'","content": "json content","programId": "numbers"}')
echo "$posts"
sleep 1s
done