
이것은 작동하는 솔루션이지만 그다지 깨끗하지는 않습니다.
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 스크립팅의 전문가가 아니며 결과를 16진수 또는 이와 유사한 값으로 변환하여 표시하는 방법을 모릅니다.
그래서 저는 이 솔루션의 짧은 버전이나 좀 더 깔끔한 접근 방식을 찾고 있습니다. 불행히도 나는 같은 것을 찾을 수 없었습니다 az vm exists
.
답변1
답변2
얼마전에 해결책을 찾았습니다. vm을 사용할 수 없는 경우 az vm list 명령의 출력은 분명히 빈 문자열입니다. 하지만 비교를 위해서는 두 개의 등호 대신 하나의 등호를 사용해야 합니다.
if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" = "" ];
then
echo "No VM was found."
else
echo "VM was found."
fi