while 루프가 로그 파일로 출력되지 않습니다.

while 루프가 로그 파일로 출력되지 않습니다.

페이지 매김이 필요한 몇 가지 문제가 있지만 예상대로 작동하도록 컬 스크립트를 얻으려고합니다. 내 요점은... 컬 부분은 작동하지만 출력을 파일에 기록할 수 없다는 것입니다.

#!/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"

또한 -loop를 더 쉽게 사용할 수 있습니다 for.

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

관련 정보