帶有字串的引號和常值 AWS CLI - AWS Command Line Interface

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

帶有字串的引號和常值 AWS CLI

在 AWS CLI中使用單引號和雙引號的方式主要有兩種。

在包含空格的字串前後使用引號

參數名稱及其值在命令列上以空格分隔。如果字串值包含內嵌空格,則您必須用引號括住整個字串,以防止將空格誤解為值和下一個參數名稱之間的分隔符號。 AWS CLI 您使用的引號類型取決於您執行的作業系統。 AWS CLI

Linux and macOS

使用單引號 ' '

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

如需使用引號的詳細資訊,請依據您偏好的 Shell 參閱相關使用者文件。

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 文件中的引用規則

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-formatted 參數的方式會有所不同。

要在命令行中更高級的用JSON法,請考慮使用命令行JSON處理器jq,例如創建JSON字符串。如需有關的詳細資訊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"}}]'

如需使用引號的詳細資訊,請依據您偏好的 Shell 參閱相關使用者文件。

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 文件中的引用規則

警告

在將命令 PowerShell 傳送至之前 AWS CLI,它會判斷您的命令是使用典型規則 PowerShell 還是CommandLineToArgvW引用規則來解譯。使用 PowerShell處理序時CommandLineToArgvW,您必須使用反斜線\逸出字元。

有關CommandLineToArgvW中的更多信息 PowerShell,請參閱 Microsoft 中 CommandLineToArgv W 對引號和反斜杠的奇怪處理有什麼問題 DevBlogs,每個人都在 Microsoft 文檔博客中以錯誤的方式引用命令行參數,並在 Microsoft 文檔中引用 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 字串中傳遞。對於雙引號字符串,您必須使用兩次轉義 `\ 對於每個報價而不是僅使用反引號。反引號會逸出反斜線,然後使用反斜線做為 CommandLineToArgvW 程序的逸出字元。

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

Blob (建議)

若要略過JSON資料輸入的 PowerShell 引用規則,請使用 Blob 將您的JSON資料直接傳遞至. AWS CLI如需 Blobs 的詳細資訊,請參閱 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\"}}]"

只有最外面的雙引號不用逸出。