1

我正在将脚本从 yq 3 迁移到 yq 4,但无法让一件事正常工作。

我有以下 YAML 并想在 targetNamespaces 之后添加一个列表项:

apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: businessautomation-operator
  namespace: rhpam-user1
spec:
  targetNamespaces:

所以输出应该是:

apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: businessautomation-operator
  namespace: rhpam-user1
spec:
  targetNamespaces:
  - rhpam-user1

此命令用于更改命名空间:

yq eval '.metadata.namespace = "rhpam-user1"' -i ./file.yaml

当我运行以下命令时,出现错误:

yq eval '.spec.targetNamespaces[+] = "rhpam-user1"'  -i ./file.yaml 

Error: '' expects 2 args but there is 1

我似乎无法正确获取新的 yq 命令结构...

4

1 回答 1

0

如果targetNamespaces打算用作数组类型,则需要将目标字符串括在 中[..]+=如下所示(在 4.11.2 版本上测试)

yq e '.spec.targetNamespaces += [ "rhpam-user1" ]' yaml

请参阅mikefarah/yq - 相对附加

于 2021-08-12T08:24:59.817 回答