の文字列での引用符とリテラルの使用 AWS CLI - AWS Command Line Interface

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

の文字列での引用符とリテラルの使用 AWS CLI

AWS CLIでは、主に、一重引用符と二重引用符の使用方法が 2 つあります。

空白を含む文字列を引用符で囲む

コマンドラインでパラメータ名とその値はスペースで区切ります。文字列値に埋め込みスペースが含まれている場合は、文字列全体を引用符で囲んで、 がスペースを値と次のパラメータ名の区切り文字として AWS CLI 誤って解釈しないようにする必要があります。使用する引用符のタイプは、 を実行しているオペレーティングシステムによって異なります AWS CLI 。

Linux and macOS

一重引用符 ' ' を使用します。

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

引用符の使用方法の詳細については、使用するシェルのユーザードキュメントを参照してください。

PowerShell

一重引用符 (推奨)

一重引用符 ' 'verbatim 文字列と呼ばれます。文字列は、入力したとおりに コマンドに渡されます。つまり、 PowerShell 変数は渡されません。

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

二重引用符

二重引用符 " "expandable 文字列と呼ばれます。変数は拡張可能な文字列で渡すことができます。

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

引用符の使用の詳細については、Microsoft PowerShell Docs の「引用ルールについて」を参照してください。

Windows command prompt

二重引用符 " " を使用します。

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

オプションとして、パラメータ名と値をスペースの代わりに等号 = で区切ることができます。通常、これはパラメータの値がハイフンで始まる場合にのみ必要です。

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

文字列内での引用符の使用

文字列に引用符が含まれている場合があり、シェルが正しく動作するためには、引用符のエスケープが必要になることがあります。一般的なパラメータ値タイプの 1 つはJSON文字列です。これは、JSON構造内の各要素名と値" "の周りにスペースと二重引用符が含まれているため、複雑です。コマンドラインに JSON形式のパラメータを入力する方法は、オペレーティングシステムによって異なります。

コマンドラインでより高度なJSON使用法を得るには、 などのコマンドラインJSONプロセッサを使用してJSON文字列を作成するjqことを検討してください。の詳細についてはjq、「」の「jq リポジトリ」を参照してくださいGitHub

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"}}]'

引用符の使用方法の詳細については、使用するシェルのユーザードキュメントを参照してください。

PowerShell

一重引用符 ' ' または二重引用符 " " を使用します。

一重引用符 (推奨)

一重引用符 ' 'verbatim 文字列と呼ばれます。文字列は、入力したとおりに コマンドに渡されます。つまり、 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"}}]'

二重引用符

二重引用符 " "expandable 文字列と呼ばれます。変数は拡張可能な文字列で渡すことができます。

二重引用符を使用する場合は、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 Docs の「引用ルールについて」を参照してください。

警告

が コマンドを PowerShell に送信する前に AWS CLI、コマンドが一般的なルール PowerShell またはCommandLineToArgvW引用ルールを使用して解釈されるかどうかを決定します。を使用して PowerShellを処理する場合CommandLineToArgvW、バックスラッシュ で文字をエスケープする必要があります\

CommandLineToArgvW の の詳細については PowerShell、Microsoft DevBlogs CommandLineToArgv「W による引用符とバックスラッシュの奇妙な処理」、Microsoft Docs ブログの「W 関数でコマンドライン引数を間違った方法で引用する」、および「Microsoft Docs の」を参照してください。 CommandLineToArgv

一重引用符

一重引用符 ' 'verbatim 文字列と呼ばれます。文字列は、入力したとおりに コマンドに渡されます。つまり、 PowerShell 変数は渡されません。バックスラッシュ \ で文字をエスケープします。

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

二重引用符

二重引用符 " "expandable 文字列と呼ばれます。変数は expandable 文字列で渡すことができます。二重引用符文字列の場合、 を使用して 2 回エスケープする必要があります。`\ バックティックのみを使用するのではなく、各引用符に対して。バックティックはバックスラッシュをエスケープし、バックスラッシュは CommandLineToArgvW プロセスのエスケープ文字として使用されます。

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

Blobs (推奨)

JSON データ入力の PowerShell 引用ルールをバイパスするには、Blobs を使用してJSONデータを に直接渡します AWS CLI。BLOB の詳細については、「blob」を参照してください。

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\"}}]"

最も外側の二重引用符のみエスケープしません。