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

如何将速记语法与 Azure CLI 配合使用

许多 Azure CLI 参数都接受 JSON 值,但由于将 JSON 平展为字符串可能很困难,Azure CLI 支持速记语法。 简写语法是 JSON 字符串的简化表示形式。

本文提供了速记语法的示例,并演示如何将 JSON 作为文件传递。

注释

当参数说明显示为类似 Support shorthand-syntax, JSON-file and YAML-file. Try "??" to show more 时,你会知道参数接受简写语法。

完整值速记语法

速记语法的格式是 JSON,被双引号括起来。 双引号会导致 JSON 值作为字符串在 PowerShell 和 Bash 脚本语言中传递。 下面是 JSON 示例:

{
  "name": "Bill",
  "age": 20,
  "paid": true,
  "emails": [
    "Bill@microsoft.com",
    "Bill@outlook.com"
  ],
  "address": {
    "country": "USA",
    "company": "Microsoft",
    "details": {
      "line1": "15590 NE 31st St",
      "line2": "Redmond, WA"
    }
  }
}

在传递参数值中的 JSON 时,JSON 将被展平并用双引号括起来。

az some-command --contact "{name:Bill,age:20,paid:true,emails:[Bill@microsoft.com,Bill@outlook.com],address:{country:USA,company:Microsoft,details:{line1:'15590 NE 31st St',line2:'Redmond, WA'}}}"

部分值速记语法

分部值的速记语法由两个部分组成,这两个部分通过一个位于索引=key之间的等号value连接。 下面是一个示例:key=value

该值可以是简化的字符串、完整值格式、JSON 或 JSON 文件路径。 使用所提供的 JSON 示例,请按照以下示例设置 --contact 参数的属性:

使用 Partial Value 表示一个单个键值对。

az some-command --contact name=Bill

请使用 Partial Value 来处理两个键值对。 请注意分隔这两对之间的空间。

az some-command --contact age=20 paid=true

使用 Partial Value 作为第二个元素。

az some-command --contact emails[1]="Bill@outlook.com"

使用Partial Value来指定详细信息属性在地址

az some-command --contact address.details="{line1:'15590 NE 31st St',line2:'Redmond, WA'}"

合并完整和部分值速记语法

可以组合完整和部分值语法,但始终从 Full Value 后面 Partial Value开始。 如果反转顺序,则最终数据仅包含Full Value而没有Partial Value中定义的属性。

使用 Full Value 后跟 Partial Value

az some-command --contact "{name:Bill,age:20,paid:true,emails:[Bill@microsoft.com,Bill@outlook.com]}" motto="One man's bug is another man's lesson."

还可以为 Full Value 列表属性添加或更新一个新元素。 例如,可以通过以下方式 Partial Value设置第二个电子邮件地址:

az some-command --contact "{name:Bill,age:20,paid:true,emails:[Bill@microsoft.com]}" emails[1]="Bill@outlook.com" motto="One man's bug is another man's lesson."

在文件中传递 JSON

还可以将 JSON 文件作为参数值传递。 使用复杂 JSON 时,建议使用此方法。

az some-command --contact address.details=./address_details.JSON

单引号字符串

单引号字符串用于传递包含特殊字符的字符串值::,{}[]、、null??和空格。 分析速记语法时,这些字符通常具有其他含义。 单引号告知分析程序将所有内容视为字符串。

传递包含空格和其他特殊字符的字符串值

下面是要作为参数中的 --contact 值传递的示例 JSON:

{
  "name": "Bill RP",
  "age": 20,
  "paid": true,
  "data": "{a: [1, 2]}"
}

Full Value 格式中使用单引号:

az some-command --contact "{name:'Bill RP',age:20,paid:true,data:'{a: [1, 2]}'}"

Partial Value 格式中使用单引号:

az some-command --contact name="'Bill RP'" data="'{a: [1, 2]}'"

在下一个示例中,还可以删除 name 键的单引号。 分析器不区分 Full Value 表达式、 null 值或 ?? 标志。

使用 Partial Value 格式:

az some-command --contact name="Bill RP"

使用撇号

撇号字符 (') 需要单引号字符串/'特殊转义符()才能区分单引号字符串末尾。 正斜杠(/) 是转义字符,在单引号字符串'撇号()之后。 如果/不在‘引号字符串’中,或者/不在'之后,/则为普通字符。

传递 Full Value 格式:

az some-command --contact "{name:'bill'/s',age:20,paid:true}"

传递 Partial Value 格式:

az some-command --contact name="'bill'/s'"

如果 value 不是 单引号字符串,则无需在后面 '添加转义字符。

传递 Partial Value 格式:

az some-command --contact name="bill's"

下面是使用以下 JSON 的另一个示例:

{
  "name": "Bill",
  "motto": "One man's bug is another man's lesson.",
  "age": 20,
  "paid": true,
  "emails": [
    "Bill@microsoft.com",
    "Bill@outlook.com"
  ]
}

Full Value格式中,使用单引号字符串,并将'替换为'/

az some-command --contact "{name:Bill,motto:'One man'/s bug is another man'/s lesson.',age:20,paid:true,emails:[Bill@microsoft.com,Bill@outlook.com]}"

采用 Partial Value 格式时,可以将包含撇号的值分析为字符串,用双引号括起来。

az some-command --contact motto="One man's bug is another man's lesson."

处理 NULL 值

将单词“null”作为字符串值传递

有时需要传递“null”字符串值。 为了区分 null 值,它必须是 单引号字符串。 例如,如果要将“null”字符串传递到 属性中:

JSON:

{
  "name": "null",
  "age": 20,
  "paid": true
}

使用 Full Value 格式:

az some-command --contact "{name:'null',age:20,paid:true}"

使用 Partial Value 格式:

az some-command --contact name="'null'"

null传递一个值

速记语法在格式nullFull Value中支持Partial Value关键字。

例如,如果要将以下对象连同null地址属性一起传递到--contact参数中:

{
  "name": "Bill",
  "age": 20,
  "paid": true,
  "emails": [
    "Bill@microsoft.com",
    "Bill@outlook.com"
  ],
  "address": null
}

使用 Full Value 格式:

az some-command --contact "{name:Bill,age:20,paid:true,emails:[Bill@microsoft.com,Bill@outlook.com],address:null}"

使用 Partial Value 格式:

az some-command --contact name=Bill address=null

在更新命令中使用null

在更新命令中, null 值通常用于取消设置对象的属性,或删除数组或字典的元素。

{
  "contact": {
    "name": "Bill",
    "age": 20,
    "paid": true,
    "emails": [
      "Bill@microsoft.com",
      "Bill@outlook.com"
    ],
    "address": {
      "country": "USA",
      "company": "Microsoft",
      "details": {
        "line1": "15590 NE 31st St",
        "line2": "Redmond, WA"
      }
    }
  },

  "other_properties": {}
}

如果已存在包含上面所示 JSON 值的资源,在更新命令中传递一个null值会重置密钥的值。

az some-update-command --contact address=null

下面是删除资源电子邮件的第一个元素的另一个示例:

az some-update-command --emails [0]=null

使用 ?? 来显示帮助

使用双问号 ?? 是一个特殊关键字,用于显示参数或子属性的可用帮助。 还可以在速记语法中使用它来获取帮助。

注释

Bash shell 使用 ? 作为通配符。 请确保问号??被括在双引号中

使用 ?? 来显示参数的帮助消息

显示 --contact 参数的帮助信息:

az some-command --contact "??"

??格式中使用Full Value

编写--contant时显示Full Value参数的帮助信息。

az some-command --contact "{??"
az some-command --contact "{name:Bill,??"

显示在编写--contant.address属性Full Value时的帮助消息。

az some-command --contact "{name:Bill,address:??"

显示在编写--contant.address.country属性Full Value时的帮助消息。

az some-command --contact "{name:Bill,address:{country:??"

显示在编写--contant.emails属性Full Value时的帮助消息。

az some-command --contact "{name:Bill,address:{country:USA},emails:??"

在写入--contant.emails时,显示Full Value属性的元素帮助消息。

az some-command --contact "{name:Bill,address:{country:USA},emails:[??"

??格式中使用Partial Value

显示在编写--contant.address属性Partial Value时的帮助消息。

az some-command --contact address="??"

显示在编写--contant.emails属性Partial Value时的帮助消息。

az some-command --contact emails="??"

在写入--contant.emails时,显示Partial Value属性的元素帮助消息。

az some-command --contact emails[0]="??"

另请参阅