【问题标题】:json element value to be replaced with variable in shell scriptjson元素值被shell脚本中的变量替换
【发布时间】:2021-06-16 16:19:31
【问题描述】:

我有一个带有主机列表的模板 json 文件作为示例。替换为shell脚本生成的动态值。

rds.json 示例

{
    "lob": "coaching",
    "function": "badminton",
    "hosts": [
        "node1.rds.sports.com",
        "node2.rds.sports.com",
        "node3.rds.sports.com"
        ],
    "adminserver": "node1.rds.sports.com",
    "user_name": "coach",
    "sudo_type": "sudo",
    "group_name": "admin"
}

echo $myHosts:

"host1.rds.sports.com", "host2.rds.sports.com", "host3.rds.sports.com", "host4.rds.sports.com", "host5.rds.sports.com", "host6.rds.sports.com", "host7.rds.sports.com", "host8.rds.sports.com"

$myHosts 的值应该在 hosts 元素键中替换。

期望的输出:

{
    "lob": "coaching",
    "function": "badminton",
    "hosts": [
        "host1.rds.sports.com", 
        "host2.rds.sports.com", 
        "host3.rds.sports.com", 
        "host4.rds.sports.com", 
        "host5.rds.sports.com", 
        "host6.rds.sports.com", 
        "host7.rds.sports.com", 
        "host8.rds.sports.com"
    ],
    "adminserver": "hosts1.rds.sports.com",
    "user_name": "coach",
    "sudo_type": "sudo",
    "group_name": "admin"
}

【问题讨论】:

    标签: json shell jq


    【解决方案1】:

    我将假设 myHosts 的内容是一个有效的 JSON 数组主体。

    jq --argjson hosts "[$myHosts]" '.hosts = $hosts | .adminserver = .hosts[0]' rds.json
    

    jqplay

    【讨论】:

    • jq 命令的 o/p 已经更新了列表,但是文件没有更新。
    • @RajeswaraRaoAyyalasomayajula - 请参阅“问:如何“就地”编辑 JSON 文件?”在 jq 常见问题解答中:github.com/stedolan/jq/wiki/FAQ
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2012-11-02
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多