Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门。本文档仅适用于 Amazon CLI 版本 1。有关 Amazon CLI 版本 2 的相关文档,请参阅版本 2 用户指南。
在 Amazon CLI 中将引号和字符串结合使用
在 Amazon CLI 中使用单引号和双引号主要有两种方式。
在包含空格的字符串周围使用引号
参数名称及其值由命令行中的空格分隔。如果字符串值包含嵌入式空格,则必须用引号将整个字符串括起来,以防止 Amazon CLI 将空格误解为值与下一个参数名称之间的分隔符。您使用的引号类型取决于您运行 Amazon 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 格式参数的方式因操作系统而异。
要在命令行中使用更高级的 JSON,请考虑使用 jq
等命令行 JSON 处理器来创建 JSON 字符串。有关 jq
的更多信息,请参阅 GitHub 上的 jq 存储库。
- 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\"
}}]"
只有最外层双引号不进行转义。