
これは実用的な解決策ですが、あまりきれいではありません。
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 コマンドの出力は空の文字列になるようです。ただし、比較には 2 つの等号ではなく 1 つの等号を使用する必要があります。
if [ "$(az vm list -d -o table --query "[?name=='VM_NAME']")" = "" ];
then
echo "No VM was found."
else
echo "VM was found."
fi