如何解决使用 yq 将对象添加到现有字段
some:
fields: ...
# ...
images:
image_1:
name: "some-name"
value: 1111
# ...
some:
other-fields: ...
image_<no>:
name: "<name>"
value: <value>
我已经找到了如何使用 yq
构建对象,但是我在将其添加到现有字段 (images
) 的最后一个元素下时遇到了问题。我用来构建对象的简化脚本。
yq eval '{"image_no": {"name": "my_name",value: 1111}' myfile.yml
解决方法
使用 yq 可以轻松解决您的任务。
bash 脚本显示了两个略有不同的版本:
- 在版本 1 中,三个参数
imageNo
name
和value
被传递给yq
。 - 在版本 2 中,参数
imageNo
是在脚本中根据当前图像数量计算的。
#!/bin/bash
FILE='
some:
fields: "value"
images:
image_1:
name: "some-name"
value: 1111
image_2:
name: "some-name-2"
value: 1112
image_3:
name: "some-name-3"
value: 1113
some:
other-fields: "other-value"
'
echo adding new image to yaml - version 1
yq -y --argjson imageNo 4 --arg name "my_name" --argjson value 1114 '
.images += {
"image_\($imageNo)":
{
name: $name,value: $value
}
}' <<< "$FILE"
echo adding new image to yaml - version 2
yq -y --arg name "my_name" --argjson value 1114 '
(.images | keys | length + 1) as $imageNo
| .images += {
"image_\($imageNo)":
{
name: $name,value: $value
}
}' <<< "$FILE"
output
版本 1 和版本 2
some:
other-fields: other-value
images:
image_1:
name: some-name
value: 1111
image_2:
name: some-name-2
value: 1112
image_3:
name: some-name-3
value: 1113
image_4:
name: my_name
value: 1114
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。