Utilizzo di virgolette e valori letterali con stringhe nella AWS CLI - AWS Command Line Interface

Utilizzo di virgolette e valori letterali con stringhe nella AWS CLI

Esistono principalmente due modi in cui vengono utilizzate le virgolette singole e doppie nella AWS CLI.

Utilizzo delle virgolette attorno a stringhe che contengono spazi bianchi

I nomi dei parametri e i relativi valori sono separati da spazi sulla riga di comando. Se un valore stringa contiene uno spazio incorporato, è necessario circondare l'intera stringa con virgolette per evitare che l'AWS CLI interpreti erroneamente lo spazio come divisore tra il valore e il nome del parametro successivo. Il tipo di virgolette utilizzate dipende dal sistema operativo su cui si sta eseguendo la AWS CLI.

Linux and macOS

Utilizzo di virgolette singole ' '

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

Per ulteriori informazioni sull’utilizzo delle virgolette, consulta la documentazione per l’utente della shell che preferisci.

PowerShell

Virgolette singole (scelta consigliata)

Le virgolette singole ' ' sono chiamate stringhe verbatim. La stringa viene passata al comando esattamente durante la digitazione, e ciò significa che le variabili PowerShell non verranno trasmesse.

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

Virgolette doppie

Le virgolette doppie " " sono chiamate stringhe expandable. Le variabili possono essere trasmesse nelle stringhe espandibili.

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

Per ulteriori informazioni sull’utilizzo delle virgolette, consulta About Quoting Rules in Microsoft PowerShell Docs.

Windows command prompt

Utilizzo delle virgolette doppie " ".

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

Facoltativamente, è possibile separare il nome del parametro dal valore con un segno di uguale (=) invece di uno spazio. In genere è necessario solo se il valore del parametro inizia con un trattino.

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

Utilizzo delle virgolette all’interno delle stringhe

Le stringhe potrebbero contenere virgolette e la shell potrebbe richiedere le virgolette di escape perché funzionino correttamente. Uno dei tipi di valore di parametro comuni è una stringa JSON. Questa operazione è complessa poiché include spazi e virgolette doppie " " attorno al nome e al valore di ogni elemento nella struttura JSON. Il modo in cui si immettono parametri in formato JSON alla riga di comando varia a seconda del sistema operativo.

Per un utilizzo più avanzato del codice JSON su una riga di comando, prendi in considerazione l’utilizzo di un processore JSON a riga di comando, ad esempio jq, per creare stringhe JSON. Per ulteriori informazioni su jq, consulta jq repository in GitHub.

Linux and macOS

Affinché Linux e macOS interpretino le stringhe, usa letteralmente le virgolette singole ' ' per racchiudere la struttura dei dati JSON, come nell’esempio seguente. Non è necessario utilizzare caratteri di escape per le virgolette doppie incorporate nella stringa JSON, poiché vengono trattate letteralmente. Poiché il codice JSON è racchiuso tra virgolette singole, sarà necessario eliminare tutte le virgolette singole nella stringa, in genere utilizzando una barra rovesciata prima delle virgolette singole \'.

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

Per ulteriori informazioni sull’utilizzo delle virgolette, consulta la documentazione per l’utente della shell che preferisci.

PowerShell

Utilizzo di virgolette singole ' ' o doppie " ".

Virgolette singole (scelta consigliata)

Le virgolette singole ' ' sono chiamate stringhe verbatim. La stringa viene passata al comando esattamente durante la digitazione, e ciò significa che le variabili PowerShell non verranno trasmesse.

Poiché le strutture di dati JSON includono virgolette doppie, suggeriamo di racchiuderle tra virgolette singole ' '. Se si utilizzano virgolette singole, non è necessario eseguire l’escape delle virgolette doppie incorporate nella stringa JSON. Tuttavia, è necessario eseguire l’escape per ogni singola virgoletta inserendo un segno di spunta ` all’interno della struttura JSON.

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

Virgolette doppie

Le virgolette doppie " " sono chiamate stringhe expandable. Le variabili possono essere trasmesse nelle stringhe espandibili.

Se si utilizzano le virgolette doppie, non è necessario eseguire l’escape delle virgolette singole incorporate nella stringa JSON. Tuttavia, è necessario eseguire l’escape per ogni virgoletta doppia con un segno di spunta ` all’interno della struttura JSON, come nell’esempio seguente.

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

Per ulteriori informazioni sull’utilizzo delle virgolette, consulta About Quoting Rules in Microsoft PowerShell Docs.

avvertimento

Prima che PowerShell invii un comando a AWS CLI, determina se il comando viene interpretato utilizzando le tipiche regole di PowerShell o delle virgolette CommandLineToArgvW. Quando i processi PowerShell utilizzano CommandLineToArgvW, è necessario eseguire l’escape dei caratteri con una barra rovesciata \.

Per ulteriori informazioni su CommandLineToArgvW in PowerShell, consulta What’s up with the strange treatment of quotation marks and backslashes by CommandLineToArgvW in Microsoft DevBlogs, Everyone quotes command line arguments the wrong way in Microsoft Docs Blog e CommandLineToArgvW function in Microsoft Docs.

Virgolette singole

Le virgolette singole ' ' sono chiamate stringhe verbatim. La stringa viene passata al comando esattamente durante la digitazione, e ciò significa che le variabili PowerShell non verranno trasmesse. Esegui l’escape dei caratteri con una barra rovesciata \.

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

Virgolette doppie

Le virgolette doppie " " sono chiamate stringhe expandable. Le variabili possono essere trasmesse nelle stringhe expandable. Per le stringhe tra virgolette doppie devi eseguire l’escape due volte usando `\ per ogni virgoletta invece di utilizzare solo un carattere di apice. Il carattere di apice evita la barra rovesciata, e quindi la barra rovesciata viene utilizzata come carattere di escape per il processo 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 (scelta consigliata)

Per ignorare le regole delle virgolette di PowerShell per l’input di dati JSON, utilizza Blobs per passare i dati JSON direttamente a AWS CLI. Per ulteriori informazioni sui Blob, consulta Blob.

Windows command prompt

Il prompt dei comandi di Windows richiede le virgolette doppie " " per racchiudere la struttura di dati JSON. Inoltre, per impedire al processore di comandi di interpretare erroneamente le virgolette doppie incorporate nel JSON, è necessario anche evitare (inserendo un carattere barra rovesciata \) l’uso di virgolette doppie " all’interno della struttura dati JSON stessa, come nell’esempio seguente.

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

Soltanto le virgolette doppie più esterne non richiedono il carattere di escape.