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 PowerShell ドキュメントの「About Quoting Rules」を参照してください。

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 を使用するには、jq のようなコマンドライン JSON プロセッサを使用して JSON 文字列を作成することを検討してください。jq の詳細については、GitHubjq repository を参照してください。

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 ドキュメントの「About Quoting Rules」を参照してください。

警告

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

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

一重引用符

一重引用符 ' '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\"}}]"

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