gpt4 book ai didi

json - 将 bash 变量写入 JSON 模板文件

转载 作者:行者123 更新时间:2023-11-29 09:29:38 24 4
gpt4 key购买 nike

我需要使用 bash 脚本创建包含一些变量的 json 文件。

为此,我有一个 bash 文件,它使用 cat 创建 json 模板文件:

cat <<'EOF' > template.json
{
"ip_range" : "$snmp_ip1",
"types" : [ "snmp" ],
"description" : "$snmp_cred1",
"snmp.version": "v2c",
"snmp.port" : 161,
"snmp.community" : "$snmp_cred1",
"snmp.retries" : 3,
"snmp.timeout" : 2
}
EOF

不幸的是,cat 不会将变量扩展为值。所以,然后我需要使用 jq 将一些变量插入到模板中,并创建一些带有扩展变量的新文件。我尝试通过以下代码为此使用 jq:

jq \
--arg snmp_ip1 "$snmp_ip" \
--arg snmp_cred1 "$snmp_cred" \
'.["snmp_ip1"]=$snmp_ip1 | .["snmp_cred"]=$snmp_cred1' \
<$DIR/template.json >$DIR/cred.json

不幸的是,它只是插入带有变量的新字符串,而不是在模板中扩展变量:

{
"snmp_cred": "fortinet/fortigate/1.3.6.1.4.1.12356.101.1.37000_fortigate3700d/10.82.112.21@public",
"snmp_ip1": "10.82.112.21",
"ip_range": "$snmp_ip1",
"types": [
"snmp"
],
"description": "$snmp_cred1",
"snmp.version": "v2c",
"snmp.port": 161,
"snmp.community": "snmp_cred1",
"snmp.retries": 3,
"snmp.timeout": 2
}

你能提示我,如何重写脚本(或者,也许使用另一种方法)来创建具有此输出的 json 文件:

{
"ip_range": "10.82.112.21",
"types": [ "snmp" ],
"description": "fortinet/fortigate/1.3.6.1.4.1.12356.101.1.37000_fortigate3700d/10.82.112.21@public",
"snmp.version": "v2c",
"snmp.port": 161,
"snmp.community": "fortinet/fortigate/1.3.6.1.4.1.12356.101.1.37000_fortigate3700d/10.82.112.21@public",
"snmp.retries": 3,
"snmp.timeout": 2
}

最佳答案

删除分隔符 OF 周围的引号,因为这会导致 cat 不扩展变量。

关于json - 将 bash 变量写入 JSON 模板文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40129843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com