jqを使用して親オブジェクト[...]にオブジェクト{...}を追加しようとしています。
しかし、次の
parent="[]"
block=$(cat << EOF
{
"block_id": "$block_id",
"block_parent_id": "$block_parent_id",
"current_index": 0,
"child_sum": 0,
"block_cidr": "",
"block_size": "",
"child_cidr": "",
"child_size": "",
"subnets": []
}
EOF
)
jq --arg ITEM "$block" '.+[$ITEM]' <<< "$parent"
与えられた
[
"{\n\t\"block_id\": \"\",\n\t\"block_parent_id\": \"\",\n\t\"current_index\": 0,\n\t\"child_sum\": 0,\n\t\"block_cidr\": \"\",\n\t\"block_size\": \"\",\n\t\"child_cidr\": \"\",\n\t\"child_size\": \"\",\n\t\"subnets\": []\n}"
]
ご覧のとおり、\ nや\ tなどのエスケープ文字は文字通りエンコードされています。 parent[]にエントリを追加してエスケープ文字(\ n ->新しい行など)を正しく翻訳するにはどうすればよいですか?
引用するhttps://replit.com/@LoganLee7/jq-add-item-encodes-nt#main.sh
ベストアンサー1
私は答えを見つけました:
jq --arg ITEM "$block" '.+[$ITEM|fromjson]' <<< "$parent"
または
jq --argjson ITEM "$block" '.+[$ITEM]' <<< "$parent"