Shell 脚本没有追加,而是擦除内容

Shell Script not appending, instead it's erasing contents

我的目标是用 .txt 文件中的用户名列表 curl 我新创建的 API,然后接收 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 个用户名的列表。有人可以告诉我我做错了什么吗?

谢谢!

使用>>附加到文件。尝试:

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

通过使用 >,您可以在每次循环运行时覆盖文件。
此外,您的脚本看起来应该在很大程度上重写和简化。