AWS CLI에서 문자열에 따옴표와 리터럴 사용 - AWS Command Line Interface

이 문서는 AWS CLI의 버전 1에만 해당합니다. AWS CLI의 버전 2와 관련된 문서는 버전 2 사용 설명서를 참조하세요.

AWS CLI에서 문자열에 따옴표와 리터럴 사용

AWS CLI에는 주로 두 가지 방법으로 작은따옴표와 큰따옴표가 사용됩니다.

공백이 포함된 문자열 주위에 따옴표 사용

파라미터 이름과 그 값은 명령줄에서 공백으로 구분됩니다. 문자열 값에 공백이 있는 경우, 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 문서에서 인용 규칙 정보를 참조하세요.

Windows command prompt

큰따옴표(" ")를 사용합니다.

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

선택적으로, 공백 대신에 등호(=)를 사용하여 파라미터 이름을 값에서 분리할 수 있습니다. 일반적으로 파라미터 값이 하이픈으로 시작되는 경우에만 필요합니다.

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

문자열 안에 따옴표 사용

문자열에는 따옴표가 포함될 수 있으며 셸이 제대로 작동하려면 따옴표를 이스케이프 처리해야 할 수 있습니다. 일반적인 파라미터 값 유형 중 하나는 JSON 문자열입니다. JSON 구조의 각 요소 이름과 값 주위에 공백과 큰따옴표(" ")가 포함되어 있기 때문에 복잡합니다. JSON 형식의 파라미터를 명령줄에 입력하는 방법은 운영 체제에 따라 다릅니다.

명령줄에서 고급 JSON을 사용하려면 명령줄 JSON 프로세서(예: jq)를 사용하여 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"}}]'

따옴표 사용에 대한 자세한 내용은 권장 셸에 대한 사용 설명서를 참조하세요.

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를 사용하여 처리하는 경우 백슬래시(\)로 문자를 이스케이프 처리해야 합니다.

PowerShell의 CommandLineToArgvW에 대한 자세한 내용은 Microsoft DevBlogsWhat's up with the strange treatment of quotation marks and backslashes by CommandLineToArgvW, Microsoft Docs BlogEveryone quotes command line arguments the wrong wayMicrosoft DocsCommandLineToArgvW 함수를 참조하세요.

작은따옴표

작은따옴표 ' '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에 직접 전달합니다. 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\"}}]"

가장 바깥쪽 큰따옴표만 이스케이프되지 않습니다.