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

おすすめ記事