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

使用JQ从JSON的values数组中逐块提取值并赋值给shell变量

实现方案

方案1:Shell脚本内直接循环赋值使用

如果你要在脚本内部直接使用每个客户的变量,推荐用以下写法,兼容性好且安全:

#!/bin/bash
# 替换为你的JSON文件路径
JSON_FILE="your_data.json"

# 逐行读取values下的每个子数组元素,赋值给VAR1-VAR4
while IFS=$'\t' read -r VAR1 VAR2 VAR3 VAR4; do
    # 此处可以直接使用当前客户的四个变量,示例打印
    echo "客户姓名:$VAR1"
    echo "客户邮箱:$VAR2"
    echo "客户电话:$VAR3"
    echo "客户城市:$VAR4"
    echo "===== 分割线 ====="
done < <(jq -r '.values[] | @tsv' "$JSON_FILE")

方案2:直接生成Shell赋值语句

如果你需要输出可单独执行的赋值语句(比如导出给其他脚本使用),可以用以下JQ命令:

jq -r '.values[] | "VAR1=\(.[0] | @sh)\nVAR2=\(.[1] | @sh)\nVAR3=\(.[2] | @sh)\nVAR4=\(.[3] | @sh)\n# 以上为当前客户的变量赋值\n"' your_data.json

输出示例:

VAR1='customer1_name'
VAR2='customer1@email.com'
VAR3='customer1_phone'
VAR4='customer1_city'
# 以上为当前客户的变量赋值

VAR1='customer2_name'
VAR2='customer2@email.com'
VAR3='customer2_phone'
VAR4='customer2_city'
# 以上为当前客户的变量赋值
注意事项
  • 代码中使用@tsv、@sh是JQ内置的安全转义能力,可以自动处理字段中存在的空格、引号、特殊符号,避免Shell赋值语法错误
  • 需保证values下的每个子数组都是固定4个元素,和VAR1-VAR4一一对应,如果字段数量有调整,对应修改变量数量即可

内容的提问来源于stack exchange,提问作者TooNetCreation

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:24:03