У меня json выглядит следующим образом:
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"batchPools": {
"value": [
{
"networkConfiguration": {
"subnetId": "/subscriptions/xxxx/resourceGroups/xxx/providers/Microsoft.Network/virtualNetworks/xxxxx/subnets/sample-name-batch",
"subnetAddressPrefix": ""
}
},
{
"networkConfiguration": {
"subnetId": "/subscriptions/xxxx/resourceGroups/xxx/providers/Microsoft.Network/virtualNetworks/xxxxx/subnets/sample-name",
"subnetAddressPrefix": ""
}
}
]
}
}
}
Мне нужно проверить, не содержит ли какой-либо из networkConfiguration.subnetID
в массиве value
строку batch
. Если да, то ничего делать не нужно. В противном случае добавьте -batch
к существующему значению. В этом случае следует обновлять только второй networkConfiguration.subnetID
массива.
Я пробовал следующее:
(.parameters.batchPools.value[] | select(.networkConfiguration.subnetId | contains("-batch") | not) | .networkConfiguration.subnetId) |= (.networkConfiguration.subnetId+"-batch")
Я получаю следующую ошибку: jq: error (at <stdin>:38): Cannot index string with string "networkConfiguration" exit status 5
Я пробовал это:
(.parameters.batchPools.value[] | select(.networkConfiguration.subnetId | contains("batch") | not) | .networkConfiguration.subnetId) |= "someValue"
Это сработало нормально и заменило весь subnetId
на someValue
. Я не могу понять, почему предыдущая команда не работает. Пожалуйста, помогите.