我正在努力让curl脚本按预期工作,解决一些需要分页的问题。我的观点是......curl 部分有效,但我无法将输出记录到文件中。
#!/usr/bin/env bash
# Author: Scouse Bob
# ----------------------------------------
log="/tmp/bob.log">>"${log}"
i=0
while [[ $i -lt 700 ]]
do curl -i -X GET "https://bob_server.atlassian.net/rest/api/3/project/search?jql=ORDER%20BY%20Created&maxResults=50&startAt=$i" --user [email protected]:<token_id> --header Accept: application/json; (( i+=50 )); >>"${log}"; done
我已经以各种形式测试了上述内容,如果我取出日志部分,脚本就会输出到屏幕上。
有谁知道为什么循环不会输出到我试图创建的日志?
答案1
你有>> "$log"
,但它没有收到任何输入,因为它是在;
.
要么把它放在后面done
:
while ... do ... done >> "$log"
或在curl
命令之后:
curl ... >> "$log"; done
另请注意,您应该引用您的--header
和--user
字符串:
--header "Accept: application/json"
此外,您可以更轻松地使用for
-loop:
for i in $(seq 0 50 700); do ... done
总共:
log="/tmp/bob.log">>"${log}"
for i in $(seq 0 50 700); do
curl -i -X GET "https://bob_server.atlassian.net/rest/api/3/project/search?jql=ORDER%20BY%20Created&maxResults=50&startAt=$i" --user "[email protected]:<token_id>" --header "Accept: application/json"
done >> "${log}"
或没有seq
:
for (( i=0; i <= 700; i += 50)); do
...
done