首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将bash变量写入JSON模板文件

将bash变量写入JSON模板文件
EN

Stack Overflow用户
提问于 2016-10-19 11:12:46
回答 1查看 4.1K关注 0票数 4

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

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

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

代码语言:javascript
复制
{
"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文件:

代码语言:javascript
复制
{
"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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-19 11:16:54

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40129843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档