Я пытаюсь создать запрос z cli, который может оценить, вошел ли я в правильный клиент и подписку. Я знаю, что должен использовать операторы ?
и &&
, но пока не смог найти их в правильной комбинации, которая будет работать. Когда я запрашиваю только одно значение, используя строку ниже, работает нормально:
az account list --query "[?id=='my_subscription_id']" --output json
Но когда я пробую любую из приведенных ниже строк, он сообщает мне, что недопустимое значение jmespath_type:
az account list --query "[?id=='my_subscription_id' && ?tenantId=='my_tenant_id']" --output json
az account list --query "[(?id=='my_subscription_id') && (?tenantId=='my_tenant_id')]" --output json
когда я пробую строку ниже, появляется ошибка ] was unexpected at this time
:
az account list --query "[(?id=='my_subscription_id')&&(?tenantId=='my_tenant_id')]" --output json
Я знаю, что это можно сделать, но пока не могу найти подходящую смесь.
ОБНОВЛЕННАЯ ИНФОРМАЦИЯ:
При дальнейшем тестировании я добился некоторого прогресса, но все еще не совсем того, чего ожидал. Предположим, что идентификатор клиента - 123, идентификатор подписки требуемой подписки - ABC, а моя учетная запись также имеет доступ к идентификатору подписки EFG. При выполнении следующей команды:
az account list --query "[].{subscriptionId:id,tenantId:tenantId}"
Получаю вывод:
{
"subscriptionId": "ABC",
"tenantId": "123"
},
{
"subscriptionId": "EFG",
"tenantId": "123"
}
Я ожидал, что выполнение приведенной ниже команды вернет только одну соответствующую запись:
az account list --query "[?id == 'ABC' && tenantid == '123'].{subscriptionId:id,tenantId:tenantId}" --output json
Но это не так. Возвращает []
.
Выполнение приведенной ниже команды возвращает единственную запись, которая соответствует обоим условиям:
az account list --query "[?id == 'ABC' || tenantid == '123'].{subscriptionId:id,tenantId:tenantId}" --output json
Согласно документации, &&
- это И, а ||
- ИЛИ. Я бы подумал, что при запуске командной строки, в которой есть ||
, будут возвращены ОБЕИ записи, но она вернет только ту, которая содержит оба значения.