Shell Script не добавляется, а стирает содержимое - PullRequest
0 голосов
/ 11 сентября 2018

Моя цель - свернуть недавно созданный API со списком имен пользователей в файле .txt, затем получить ответ API, сохранить его в формате .json, а затем создать файл .csv (чтобы его было проще читать),

Это мой сценарий:

echo "$result" | jq 'del(.id, .Time, .username)' | jq '{andres:[.[]]}' > newresult

Ввод: sudo bash script.sh usernames.txt Usernames.txt:

test1
test2
test3
test4

Результат:

"id","username"
4,"test4"

ЖелаемыйРезультат:

"id","username"
1,"test1"
2,"test2"
3,"test3"
4,"test4"

Создает файлы по мере необходимости и даже сохраняет результат.Тем не менее, он выводит только 1 результат.Я могу открыть CSV / Json во время его работы и увидеть, что он запрашивает разные имена пользователей, но затем, когда он запускает другой запрос, а не добавляет его все в один файл, он удаляет Newresult, Result.json, Results.csv,и создает новые, то есть, в конце концов, я получаю в результате только одно имя пользователя, а не список из 5, например.Может кто-нибудь сказать мне, что я делаю не так?

Спасибо!

1 Ответ

0 голосов
/ 11 сентября 2018

Используйте >> для добавления в файл. Попробуйте:

    : >results.csv
    for ligne in $(seq 1 "$nbrlignes");
    do
        ...
        jq -r '
        ["id", "username"] as $headers
            | $headers, (.andres[][] | [.[$headers[]]]) | @csv
        ' < result.json >> results.csv
    done

Используя >, вы перезаписываете файл при каждом запуске цикла.
Также ваш сценарий выглядит так, как будто он должен быть в значительной степени переписан и упрощен.

...