1
bashスクリプトを使用して、いくつかの変数を含むjsonファイルを作成する必要があります。JSONテンプレートファイルにbash変数を書き込む
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
残念ながら、猫が値に変数を展開しません。この目的のために
は、私は猫を使用してJSONテンプレートファイルを作成し、bashのファイルを、持っています。 それで、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/[email protected]",
"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/[email protected]",
"snmp.version": "v2c",
"snmp.port": 161,
"snmp.community": "fortinet/fortigate/1.3.6.1.4.1.12356.101.1.37000_fortigate3700d/[email protected]",
"snmp.retries": 3,
"snmp.timeout": 2
}
私が変更したとき:cat < template.json - テンプレートから変数を削除するだけです。例えば、 "ip_range": ""、 –
'cat'が返る直前に 'echo $ snmp_ip1'とは何か? –
http://prntscr.com/cw7ed3 –