小编Arj*_*jen的帖子

空格分隔值;如何提供包含空格的值

我正在创建一个 bash 脚本来通过Azure CLI预配多个 Azure 资源。到目前为止一切顺利,但是我在标记资源时遇到问题。

az我的目标是将多个标签存储在一个变量中,并将该变量提供给脚本中多个命令的 --tags 选项。然而问题是值中的空格将被解释​​为新键。

如果我们以命令az group update(将更新资源组)为例,文档对 --tags 选项进行了以下说明:

--tags 'key[=value]' 格式的空格分隔标签。使用“”清除现有标签。

当值(或键)包含空格时,必须将其括在引号中。因此,当我们直接向命令提供键值对(包括带空格的值)时(如下例所示),结果将符合预期:

az group update --tags owner="FirstName LastName" application=coolapp --name resource-group-name
Run Code Online (Sandbox Code Playgroud)

结果将是两个标签已添加到资源组中:

{
  "id": "/subscriptions/1e42c44c-bc55-4b8a-b35e-de1dfbcfe481/resourceGroups/resource-group-name",
  "location": "westeurope",
  "managedBy": null,
  "name": "resource-group-name",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": {
    "application": "coolapp",
    "owner": "FirstName LastName"
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我们将上一步中使用的相同值存储在变量中时,就会出现问题。

tag='owner="FirstName LastName" application=coolapp'
Run Code Online (Sandbox Code Playgroud)

我用来echo $tag验证变量是否包含与我们在上一个示例中为 --tags 选项提供的值完全相同的值:

owner="FirstName LastName" application=coolapp
Run Code Online (Sandbox Code Playgroud)

但是,当我们将此标签变量提供给命令的标签选项时,如下一行所示:

az group update --tags $tag --name resource-group-name
Run Code Online (Sandbox Code Playgroud)

结果将是三个标签,而不是预期的两个: …

bash tagging azure azure-cli azure-resource-group

7
推荐指数
1
解决办法
4020
查看次数

标签 统计

azure ×1

azure-cli ×1

azure-resource-group ×1

bash ×1

tagging ×1