我有一個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 [@]}」)' –