の文字列を含む引用符とリテラル AWS CLI - AWS Command Line Interface

このドキュメントは、 のバージョン 1 AWS CLI のみを対象としています。のバージョン 2 に関連するドキュメントについては AWS CLI、「 バージョン 2 ユーザーガイド」を参照してください。

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

の文字列を含む引用符とリテラル 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 Docs の「引用ルールについて」を参照してください。 PowerShell

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 Docs の「引用ルールについて」を参照してください。 PowerShell

警告

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

CommandLineToArgvW の の詳細については PowerShell、Microsoft の CommandLineToArgv「W による引用符とバックスラッシュの異常な処理」、Microsoft Docs ブログ「W 関数」の「W 関数でコマンドライン引数を間違った方法で引用する」を参照してください。 DevBlogs 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 引用ルールを回避するには、BLOB を使用して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\"}}]"

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