你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何在 Azure CLI 命令中使用变量

除了直接在命令中指定值外,还可以通过多种方式提供值:

  • 使用 shell 变量
  • 设置用于多个命令的订阅
  • 为某些参数创建默认值

本文讨论在 Azure CLI 命令中指定值的各种方法。

先决条件

使用 shell 变量

Azure CLI 在 shell 中运行。 本文使用 Bash。 有关其他脚本语言的信息,请参阅 “选择正确的 Azure 命令行工具”。 可以使用 Bash 中的变量将参数的值传递给命令。 将变量与 Azure CLI 配合使用还允许重用命令(片段或脚本)。

此示例创建与现有虚拟机上的存储磁盘类型相同的新存储磁盘。

# Bash script
# Assign values to variables
MyResourceGroup=ContosoRGforVM
MySubscription="Contoso subscription"
vmName=VM01

# Get a value for a variable based on an existing virtual machine
osType=$(az vm get-instance-view --resource-group $MyResourceGroup \
   --name $vmName --subscription "$MySubscription" \
   --query 'storageProfile.osDisk.osType' --output tsv)

# Create a disk of the same type by using the variable value
az disk create --resource-group $MyResourceGroup --name DestinationDisk --size-gb 20 --os-type $osType

此示例演示如何将值分配给重复使用的变量,如 MyResourceGrouposType。 命令 az vm get-instance-view 与查询 storageProfile.osDisk.osType 结合使用将返回磁盘的 OS 类型。 将命令用 $() 封装后,把命令的返回值赋给 osType。 若要详细了解 --query 和 JMESPath 查询,请参阅 如何使用 JMESPath 查询查询 Azure CLI 命令输出

将值分配给另一个命令中的变量时,请确保该命令使用兼容的输出格式。 az vm get-instance-view 命令使用tsv输出格式。 此选项返回不带额外格式、键或其他符号的值。 某些输出格式包括结构或字符,如引号。 有关详细信息,请参阅 Azure CLI 命令的输出格式

在此示例中, MySubscription 变量必须采用引号。 变量的值包含空格,命令无法分析这些空格。 如果仅使用订阅 ID,则无需使用引号。

设置订阅

许多命令需要特定的订阅。 Azure 资源存在于订阅中的资源组中。 Azure CLI 在会话中时使用默认订阅。 若要查看当前订阅值,请运行 az account show 命令:

az account show --output table

你可能只能拥有一个订阅的权限。 有关详细信息,请参阅 将 Azure 订阅与 Azure CLI 配合使用:可以使用 az account set 命令设置当前订阅:

az account set --subscription "My Demos"

设置订阅后,可以省略 --Subscription 参数。 有关详细信息,请参阅 将 Azure 订阅与 Azure CLI 配合使用

创建默认值

可以使用 az config set 命令为某些参数设置值。 此示例设置默认资源组:

az config set defaults.group=ContosoRGforVM

运行此命令后,可以运行以下命令,在 ContosoRGforVM 资源组中创建存储帐户:

az storage account create --name storage135 --___location eastus --sku Standard_LRS

请注意,命令中没有指定的资源组。 有关详细信息,请参阅 设置默认资源组

小窍门

以不同方式获取参数值的命令可能会令人困惑。 如果命令出现意外结果,例如找不到资源组,则可能存在默认值。

如果遇到错误,请使用指定的参数和值再次运行该命令。 参数的显式值始终优先于其他选项。

可以这样为多个参数指定值。 有关详细信息,请参阅 Azure CLI 配置

清理资源

如果已创建资源以尝试本文中的任何命令,则可以使用 az group delete 命令将其删除:

az group delete --name ContosoRGforVM
az group delete --name ContosoStorageRG

此命令将一次性删除组及其包含的所有资源。

另请参阅