我有这个 yaml :
routes:
T_NAME:
paths:
T_PATH:
- allowed_methods:
- GET
matching_policy: prefix
auth:
jwt:
required: true
scopes:
allOf:
- scope1
我想在 allOf 中追加元素
for i in ${nemo[@]}; do
yq ".routes.T_NAME.paths.T_PATH.allowed_methods.auth.jwt.scopes.allOf += \"${i}\"" note.yaml
done
这行不通,请有任何想法
使用 mikefarah/yq,您可以传递原始输入数组,即
nemo
作为参数列表,并在 yq
的上下文中将其作为字符串输入接收,然后将其拆分为单个空格,以获得列表元素。
nemo=(a b c) # Sample input
myenv="${nemo[*]}" yq '.routes.T_NAME.paths.T_PATH[0].auth.jwt.scopes.allOf += ( strenv(myenv) | split(" ") )' yaml
按预期产生所需的输出。
routes:
T_NAME:
paths:
T_PATH:
- allowed_methods:
- GET
matching_policy: prefix
auth:
jwt:
required: true
scopes:
allOf:
- scope1
- a
- b
- c