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
通过使用 >
,您可以在每次循环运行时覆盖文件。
此外,您的脚本看起来应该在很大程度上重写和简化。
我的目标是用 .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
通过使用 >
,您可以在每次循环运行时覆盖文件。
此外,您的脚本看起来应该在很大程度上重写和简化。