Bash 使用 Azure CLI 编写脚本

Bash Script with Azure CLI

我是 shell 脚本的新手。 我正在尝试使用

az sig 镜像版本列表<code></p> <p>来自 azure 的命令应该 return 版本列表并将其存储到 list/array 中。所以我可以在 for 循环中单步执行列表。</p> <pre>VERSIONS_LIST="$(az sig image-version list --gallery-image-definition $GALLERY_IMAGE_NAME --gallery-name $GALLERY_NAME --resource-group $RESOURCE_GROUP_NAME)`"

但是,我不确定命令 return 是否不仅仅是版本。如果可以我怎么只取一部分输出呢?

我在显示填充列表时也遇到了问题。我相信我使用 azure cli 存储在列表中的语法是错误的。非常感谢任何指导。

echo VERSION_LIST

我是否将列表正确存储到变量中?

您可以使用 az sig image-version list 的输出中的 Global Parameters --query and --output to query the version list with JMESPath 然后您可以将输出作为变量存储在 bash 中,像这样不带双引号,

VERSIONS_LIST=$(az sig image-version list --gallery-image-definition $GALLERY_IMAGE_NAME --gallery-name $GALLERY_NAME --resource-group $RESOURCE_GROUP_NAME --query "xxx" --output tsv)

然后你可以用命令echo $VERSIONS_LIST检查变量。如果你想运行 for循环,你可以这样做,

for version in $VERSIONS_LIST
do
    echo $version

done

例如,这是一个使用 CLI 2.0 的 bash 脚本。有关详细信息,请参阅 this blog

#!/bin/bash
rgName=nancytest
vmlist=$(az vm list -g $rgName --query "[].name" -o tsv)

for vm in  $vmlist
do

vmLocation=$(az vm show -g $rgName -n $vm --query "location" -o tsv)
echo $vm,$vmLocation

done

参见bash for loop examples