我有一个BASH阵列如下:转换BASH阵列以JSON阵列
TEMPARRAY=("1 A" "2 B")
我想这个数组转换成JSON阵列(或键值对?),就像这样:
{
"Comment": "MX Record for XYZ",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "XYZ",
"Type": "MX",
"TTL": 300,
"ResourceRecords": [
{
"Value": "1 A"
},
{
"Value": "2 B"
}
]
}
}
]
}
USE CASE:我正在创建一个shell脚本来添加AWS Route53 DNS记录,并且我坚持为MX记录指定多个值。如果我更新MX记录,它将被更新的记录替换。从我的脚本
示例代码:
if [[ "$MXCOUNT" -gt "1" ]]; then
TEMPARRAY=("$(grep -i MX "$DNSFILE" | cut -d, -f3)")
for i in "${TEMPARRAY[@]}"; do
# POSSIBLE CODE HERE
done
else
addMXrecord "$DNSNAME" "$DNSVALUE"
fi
功能addMXrecord将包含JSON
DNSFILE在格式(虽然它是一个单一的MX记录。):
DOMAIN,MX,1 A
DOMAIN,MX,2 B
乐意提供任何信息。
建议输出文件中的内容比输入文件中的要多。一个人无法很好地从无到有制造数据。 –
......说,这种操作的通用工具(在shell中用于JSON操作的可接受工具包,就像awk用于处理面向行和字段的文件一样)是[jq](https:/ /stedolan.github.io/jq/manual/)。 –
顺便说一句,标题中的字面问题的答案(在进入具有问题具体细节的杂草之前)如下所示:'jq -cRn'[inputs]'<<((($ {#array [@]}) ))&& printf'%s \ n'“$ {array [@]}”)' –