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

如何通过bash脚本传入参数动态生成指定结构的JSON文件

实现方案

你可以通过以下两种方式实现参数替换生成目标JSON文件:

方案1:无额外依赖的Here Document实现

适合传入的hostgroup参数没有特殊字符(引号、换行等)的场景,不需要安装额外工具。
将以下内容保存为myscript文件:

#!/bin/bash
# 参数校验
if [ $# -ne 2 ]; then
    echo "用法: $0 <hostgroup值> <minimum_should_match数值>"
    exit 1
fi
# 生成JSON写入文件
cat > output.json <<EOF
{
  "bool": {
    "should": [
      {
        "match_phrase": {
          "hostgroup.keyword": "$1"
        }
      }
    ],
    "minimum_should_match": $2
  }
}
EOF

操作步骤:

  • 给脚本加执行权限:chmod +x myscript
  • 执行脚本:./myscript hostgroup_one 2,执行后会在当前目录生成对应内容的output.json文件
    如果需要直接输出JSON内容到终端而非写入文件,把代码里的cat > output.json改成cat即可。

方案2:基于jq的严谨实现(推荐)

如果传入参数可能包含特殊字符,推荐用jq工具生成JSON,会自动转义特殊字符,保证生成的JSON格式合法。
首先确认系统已安装jq,大部分Linux发行版可直接通过包管理器安装:apt install jq 或 yum install jq。
将以下内容保存为myscript文件:

#!/bin/bash
# 参数校验
if [ $# -ne 2 ]; then
    echo "用法: $0 <hostgroup值> <minimum_should_match数值>"
    exit 1
fi
# 调用jq生成合法JSON
jq -n \
  --arg hg "$1" \
  --argjson msm "$2" \
  '{
    "bool": {
      "should": [
        {
          "match_phrase": {
            "hostgroup.keyword": $hg
          }
        }
      ],
      "minimum_should_match": $msm
    }
  }' > output.json

操作步骤和方案1完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:27:04