
Это рабочее решение, но не очень чистое:
if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" == "$(az vm list -d -o table --query "[?name=='ABSURD_NAME_THAT_CERTAINLY_DOES_NOT_EXIST']")" ];
then
printf "VM DOES NOT EXIST YET"
else
printf "VM ALREADY EXISTS"
fi
Я не смог понять, что
"$(az vm list -d -o table --query "[?name=='ABSURD_NAME_THAT_CERTAINLY_DOES_NOT_EXIST']")"
возвращает, поэтому я не смог сократить это решение.
Я, конечно, не эксперт в написании скриптов Bash и не знаю, как преобразовать результат в шестнадцатеричные значения или что-то подобное, чтобы сделать его видимым.
Поэтому я ищу либо короткую версию этого решения, либо другой более чистый подход. К сожалению, я не смог найти ничего похожего az vm exists
.
решение1
Вы могли бы использоватьЛазурный графикдля того, чтобы это сделать.
az graph query -q "Resources | where type =~'Microsoft.Compute/virtualMachines' | limit 1"
Вы можете увидеть некоторые примерыздесь.
Resources
| where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$'
| order by name asc
решение2
Я нашел решение некоторое время назад. Вывод команды az vm list, если vm недоступен, по-видимому, представляет собой пустую строку. Но для сравнения нужно использовать один знак равенства вместо двух.
if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" = "" ];
then
echo "No VM was found."
else
echo "VM was found."
fi