
Esta es una solución que funciona pero no muy limpia:
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
No pude entender qué
"$(az vm list -d -o table --query "[?name=='ABSURD_NAME_THAT_CERTAINLY_DOES_NOT_EXIST']")"
devuelve, por eso no pude acortar esta solución.
Ciertamente no soy un experto en secuencias de comandos Bash y no sé cómo convertir el resultado a valores hexadecimales o similares para hacerlo visible.
Por eso estoy buscando una versión corta de esta solución u otro enfoque más limpio. Desafortunadamente, no pude encontrar nada parecido az vm exists
.
Respuesta1
Podrías usarGráfico azulpara poder hacerlo.
az graph query -q "Resources | where type =~'Microsoft.Compute/virtualMachines' | limit 1"
Puedes ver algún ejemplo.aquí.
Resources
| where type =~ 'microsoft.compute/virtualmachines' and name matches regex @'^Contoso(.*)[0-9]+$'
| order by name asc
Respuesta2
Encontré la solución hace un tiempo. La salida del comando az vm list si no hay ninguna máquina virtual disponible es aparentemente la cadena vacía. Pero debes usar un signo igual en lugar de dos para la comparación.
if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" = "" ];
then
echo "No VM was found."
else
echo "VM was found."
fi