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

如何在Bash脚本中向JSON数组插入不存在的指定元素?

在Bash中用jq检查并插入JSON数组元素

直接用jq工具就能优雅解决这个问题,无需用Bash循环解析JSON(易出错)。以下是完整实现:

核心脚本

#!/bin/bash

# 定义要添加的菜品
order="lasagna"

# 检查并更新JSON数组:存在则不操作,不存在则追加到末尾
jq --arg new_item "$order" \
    '.foods.menu |= if index($new_item) then . else . + [$new_item] end' \
    response.json > temp.json && mv temp.json response.json

命令解析

  • --arg new_item "$order":将Bash变量order的值传入jq,命名为new_item,避免字符串转义问题
  • .foods.menu |=:定位到JSON中foods下的menu数组,|=是jq的更新操作符,将后续处理结果赋值给该数组
  • if index($new_item) then . else . + [$new_item] end:
    • index($new_item):检查数组中是否存在目标元素,存在则返回其索引,不存在返回null
    • 存在时直接保留原数组(.表示当前值),不存在则将新元素追加到数组末尾(. + [$new_item])
  • 临时文件过渡:jq不支持直接修改原文件,用临时文件避免操作失败损坏原数据

扩展说明

  • 若要将新元素添加到数组开头,只需把. + [$new_item]改为[$new_item] + .
  • 该命令天然支持去重,重复执行同一order值不会重复添加元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:50:24