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

不使用jq如何在Shell脚本中读取JSON属性值并赋值给变量

实现方案

以下方法仅适用于你给出的这类**无嵌套、属性值无特殊符号(逗号/双引号/大括号)**的简单JSON结构,不需要额外安装工具,仅用系统自带的sed/awk即可实现。

方法1:使用sed直接处理

步骤1:获取JSON内容

先将curl的返回结果存入变量,示例:

# 替换成你的实际curl请求
json=$(curl https://your-api-address.com/xxx)
# 也可以直接用你给出的示例内容测试
# json='[{ "id":3, "start_time" : "x","end_time" : "x","total_time" : "x"}]'

步骤2:输出key=value格式内容

echo "$json" | sed -e 's/^\[//' -e 's/\]$//' -e 's/[{}"]//g' -e 's/,/\n/g' -e 's/ *: */=/g'

执行后直接得到你需要的输出:

id=3
start_time=x
end_time=x
total_time=x

步骤3:导入变量到当前shell(可选)

如果需要直接在脚本中使用这些变量,可以执行:

source <(echo "$json" | sed -e 's/^\[//' -e 's/\]$//' -e 's/[{}"]//g' -e 's/,/\n/g' -e 's/ *: */=/g')

执行后可以直接调用变量:

echo $id # 输出3
echo $start_time # 输出x

方法2:使用awk处理

如果需要更灵活的匹配逻辑,可以用awk实现:

echo "$json" | awk -F'[:,]' '{
    gsub(/[\[\]{}" ]/, "", $0)
    for(i=1;i<=NF;i+=2) {
        print $i"="$(i+1)
    }
}'

注意事项

以上方案仅适配简单扁平结构的JSON,如果JSON存在嵌套结构、属性值包含特殊符号的场景,还是建议使用jq工具处理,避免解析错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:45:04