You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Bash脚本以将API响应本地保存为CSV或JSON

修改Bash脚本以保存API响应为JSON/CSV

一、保存为JSON格式

如果API默认返回JSON响应,你可以直接将curl输出重定向到本地文件,为每个分组生成独立的JSON文件:

#!/bin/bash
groups=("group1" "group12" "group123" "group1234" "group12345" "group123456") 
for group in "${groups[@]}" 
do 
   # 保留调试信息并写入文件,若不需要调试可去掉 -v 和 2>&1
   curl -v https://websitehere.com/api/v2/groups/${group}/details \
        -H "Authorization: Bearer PANDA TOKEN HERE" \
        > "${group}_details.json" 2>&1

   # 仅保存响应内容的简化版
   # curl https://websitehere.com/api/v2/groups/${group}/details \
   #      -H "Authorization: Bearer PANDA TOKEN HERE" \
   #      > "${group}_details.json"
done 

说明:

  • 修正了数组变量名(避免和循环变量重名)
  • 使用>将API响应(标准输出)写入以分组名命名的JSON文件
  • 2>&1会把curl的调试日志(标准错误)也写入文件,不需要的话可以删除

二、保存为CSV格式

情况1:API支持直接返回CSV

如果目标API允许通过请求头或查询参数指定返回CSV格式,参考以下修改:

#!/bin/bash
groups=("group1" "group12" "group123" "group1234" "group12345" "group123456") 
for group in "${groups[@]}" 
do 
   # 示例1:通过Accept请求头指定CSV格式
   curl https://websitehere.com/api/v2/groups/${group}/details \
        -H "Authorization: Bearer PANDA TOKEN HERE" \
        -H "Accept: text/csv" \
        > "${group}_details.csv"

   # 示例2:通过URL查询参数指定CSV格式(需API支持)
   # curl https://websitehere.com/api/v2/groups/${group}/details?format=csv \
   #      -H "Authorization: Bearer PANDA TOKEN HERE" \
   #      > "${group}_details.csv"
done 

情况2:API仅返回JSON,需转换为CSV

如果API只返回JSON,可使用jq工具将JSON转成CSV(需先安装jq,比如sudo apt install jq或brew install jq)。根据你的JSON结构调整表头字段:

#!/bin/bash
groups=("group1" "group12" "group123" "group1234" "group12345" "group123456") 
# 自定义CSV表头,需与JSON响应中的键名一致
headers="id,name,description,member_count"

for group in "${groups[@]}" 
do 
   curl -s https://websitehere.com/api/v2/groups/${group}/details \
        -H "Authorization: Bearer PANDA TOKEN HERE" \
   | jq -r --arg headers "$headers" '
      ($headers | split(",")) as $cols
      | .[] | [ $cols[] as $col | .[$col] ] | @csv
   ' > "${group}_details.csv"
done 

说明:

  • -s让curl静默执行,不显示进度条
  • 若JSON响应是单个对象而非数组,需去掉jq命令中的.[]

内容的提问来源于stack exchange,提问作者Мирослав Бадански

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:01:56