在 AWS CLI 中将引号和字符串结合使用 - AWS Command Line Interface
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在 AWS CLI 中将引号和字符串结合使用

在 AWS CLI 中使用单引号和双引号主要有两种方式。

在包含空格的字符串周围使用引号

参数名称及其值由命令行中的空格分隔。如果字符串值包含嵌入式空格,则必须用引号将整个字符串括起来,以防止 AWS CLI 将空格误解为值与下一个参数名称之间的分隔符。您使用的引号类型取决于您运行 AWS CLI 的操作系统。

Linux and macOS

使用单引号 ' '

$ aws ec2 create-key-pair --key-name 'my key pair'

有关使用引号的更多信息,请参阅首选 Shell 的用户文档。

PowerShell

使用单引号 ' ' 或双引号 " "

PS C:\> aws ec2 create-key-pair --key-name 'my key pair'
PS C:\> aws ec2 create-key-pair --key-name "my key pair"

有关使用引号的更多信息,请参阅 Microsoft PowerShell 文档 中的关于引号规则

Windows command prompt

使用双引号 " "

C:\> aws ec2 create-key-pair --key-name "my key pair"

(可选)您可以用等号 = 而不是空格将参数名称和值分隔开。这通常仅在参数的值以连字符开头时有必要。

$ aws ec2 delete-key-pair --key-name=-mykey

在字符串内使用引号

字符串可能包含引号,并且您的 Shell 可能需要对引号进行转义才能让其正常发挥作用。常见的参数值类型之一是 JSON 字符串。这很复杂,因为它在 JSON 结构中的每个元素名称和值周围都包含空格和双引号 " "。在命令行中输入 JSON 格式参数的方式因操作系统而异。

Linux and macOS

为了让 Linux 和 macOS 按字面含义解释字符串,请使用单引号 ' ' 将 JSON 数据结构括住,如以下示例所示。您不需要对嵌入在 JSON 字符串中的双引号进行转义,因为会按字面含义对它们进行处理。由于 JSON 用单引号括住,因此字符串中的任何单引号都需要进行转义,这通常通过在单引号 \' 前面使用反斜杠来实现。

$ aws ec2 run-instances \ --image-id ami-12345678 \ --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'

有关使用引号的更多信息,请参阅首选 Shell 的用户文档。

PowerShell

使用单引号 ' ' 或双引号 " "

单引号(推荐)

由于 JSON 数据结构包含双引号,因此我们建议使用 引号 ' ' 将其括起来。如果使用 引号,则不需要对嵌入在 JSON 字符串中的 引号进行转义。但是,您需要在 JSON 结构中使用反撇号 ` 对每个 引号进行转义。

PS C:\> aws ec2 run-instances \ --image-id ami-12345678 \ --block-device-mappings '[{"DeviceName":"/dev/sdb","Ebs":{"VolumeSize":20,"DeleteOnTermination":false,"VolumeType":"standard"}}]'

双引号

如果您使用 引号,则不需要对嵌入在 JSON 字符串中的 引号进行转义。但是,您需要在 JSON 结构中使用反撇号 ` 对每个 引号进行转义,如以下示例所示。

PS C:\> aws ec2 run-instances \ --image-id ami-12345678 \ --block-device-mappings "[{`"DeviceName`":`"/dev/sdb`",`"Ebs`":{`"VolumeSize`":20,`"DeleteOnTermination`":false,`"VolumeType`":`"standard`"}}]"

有关使用引号的更多信息,请参阅 Microsoft PowerShell 文档 中的关于引号规则

Windows command prompt

Windows 命令提示符要求使用双引号 " " 括住 JSON 数据结构。此外,为了防止命令处理器误解 JSON 中嵌入的双引号,还必须对 JSON 数据结构本身中的每个双引号 " 进行转义(在前面加一个反斜杠 \ 字符),如以下示例所示。

C:\> aws ec2 run-instances \ --image-id ami-12345678 --block-device-mappings "[{\"DeviceName\":\"/dev/sdb\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false,\"VolumeType\":\"standard\"}}]"

只有最外层双引号不进行转义。