Utilisation de guillemets et de littéraux avec des chaînes dans l’AWS CLI - AWS Command Line Interface

Utilisation de guillemets et de littéraux avec des chaînes dans l’AWS CLI

Il existe principalement deux manières d’utiliser des guillemets simples et doubles dans l’AWS CLI.

Utilisation de guillemets autour des chaînes contenant des espaces blancs

Les noms des paramètres et leurs valeurs sont séparés par des espaces sur la ligne de commande. Si une valeur de chaîne contient un espace incorporé, vous devez entourer la chaîne entière de guillemets pour éviter que l’AWS CLI interprète par erreur l’espace comme étant un séparateur entre la valeur et le nom du paramètre suivant. Le type de guillemets que vous utilisez dépend du système d’exploitation sur lequel vous exécutez l’AWS CLI.

Linux and macOS

Utilisation des guillemets simples ' '

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

Pour plus d’informations sur l’utilisation des guillemets, consultez la documentation utilisateur de votre shell préféré.

PowerShell

Guillemets simples (recommandé)

Les guillemets simples ' ' sont appelées chaînes verbatim. La chaîne est transmise à la commande exactement telle que vous la saisissez, ce qui signifie que les variables PowerShell ne seront pas transmises.

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

Guillemets doubles

Les guillemets doubles " " sont appelés chaînes expandable. Les variables peuvent être transmises sous forme de chaînes extensibles.

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

Pour plus d’informations sur l’utilisation des guillemets, consultez About Quoting Rules dans Microsoft PowerShell Docs.

Windows command prompt

Utilisation des guillemets doubles " ".

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

Si vous le souhaitez, vous pouvez séparer le nom de paramètre de la valeur par un signe égal = au lieu d’un espace. Cela n’est généralement nécessaire que si la valeur du paramètre commence par un trait d’union.

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

Utilisation de guillemets à l’intérieur des chaînes

Les chaînes peuvent contenir des guillemets, et votre shell peut avoir besoin de guillemets pour fonctionner correctement. L’un des types de valeurs de paramètre courants est une chaîne JSON. Ceci est complexe, car il inclut des espaces et des guillemets doubles " " autour du nom et de la valeur de chaque élément dans la structure JSON. La manière dont vous entrez des paramètres au format JSON sur la ligne de commande varie selon le système d’exploitation.

Pour une utilisation plus avancée du JSON dans la ligne de commande, pensez à utiliser un processeur JSON de ligne de commande, par exemple jq, pour créer des chaînes JSON. Pour plus d’informations sur jq, consultez le référentiel jq sur GitHub.

Linux and macOS

Pour que Linux et macOS interprètent littéralement les chaînes, utilisez des guillemets simples ' ' pour entourer la structure de données JSON, comme dans l’exemple suivant. Il n’est pas nécessaire d’échapper les guillemets doubles intégrés dans la chaîne JSON, car ils sont traités littéralement. Comme le JSON est placé entre guillemets simples, tous les guillemets simples de la chaîne devront être échappés. Cela se fait généralement en utilisant une barre oblique inverse avant le guillemet simple \'.

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

Pour plus d’informations sur l’utilisation des guillemets, consultez la documentation utilisateur de votre shell préféré.

PowerShell

Utilisez des guillemets simples ' ' ou des guillemets doubles " ".

Guillemets simples (recommandé)

Les guillemets simples ' ' sont appelées chaînes verbatim. La chaîne est transmise à la commande exactement telle que vous la saisissez, ce qui signifie que les variables PowerShell ne seront pas transmises.

Étant donné que les structures de données JSON contiennent des guillemets doubles, nous vous recommandons d’utiliser des guillemets simples ' ' pour les entourer. Si vous utilisez des guillemets simples, il n’est pas nécessaire d’échapper les guillemets doubles intégrés dans la chaîne JSON. Cependant, vous devez éviter d’échapper chaque guillemet simple par un accent grave ` au sein de la structure JSON.

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

Guillemets doubles

Les guillemets doubles " " sont appelés chaînes expandable. Les variables peuvent être transmises sous forme de chaînes extensibles.

Si vous utilisez des guillemets doubles, il n’est pas nécessaire d’échapper les guillemets simples intégrés dans la chaîne JSON. Cependant, vous devez éviter d’échapper chaque guillemet simple par un accent grave ` au sein de la structure JSON, comme dans l’exemple suivant.

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

Pour plus d’informations sur l’utilisation des guillemets, consultez About Quoting Rules dans Microsoft PowerShell Docs.

Avertissement

Avant que PowerShell n’envoie une commande à l’AWS CLI, il détermine si votre commande est interprétée à l’aide de règles PowerShell classiques ou de règles de guillemets CommandLineToArgvW. Lorsque PowerShell traite les commandes utilisant CommandLineToArgvW, vous devez éviter les caractères d’échappement avec une barre oblique inverse \.

Pour plus d’informations sur CommandLineToArgvW dans PowerShell, consultez What’s up with the strange treatment of quotation marks and backslashes by CommandLineToArgvW dans Microsoft DevBlogs, Everyone quotes command line arguments the wrong way dans Microsoft Docs Blog et CommandLineToArgvW function dans Microsoft Docs.

Guillemets simples

Les guillemets simples ' ' sont appelées chaînes verbatim. La chaîne est transmise à la commande exactement telle que vous la saisissez, ce qui signifie que les variables PowerShell ne seront pas transmises. Échappez les caractères avec une barre oblique inverse \.

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

Guillemets doubles

Les guillemets doubles " " sont appelés chaînes expandable. Les variables peuvent être transmises sous forme de chaînes expandable. Pour les chaînes entre guillemets, vous devez échapper deux fois en utilisant `\ pour chaque guillemet au lieu de simplement utiliser un accent grave. L’accent grave échappe la barre oblique inverse, puis la barre oblique inverse est utilisée comme caractère d’échappement pour le traitement de la commande 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 (recommandé)

Pour contourner les règles de guillemets PowerShell pour la saisie de données JSON, utilisez Blobs pour transmettre vos données JSON directement à l’AWS CLI. Pour plus d’informations sur les blobs, consultez Blob.

Windows command prompt

L’invite de commande Windows exige que la structure de données JSON soit placée entre guillemets doubles " ". De plus, pour empêcher le processeur de commandes de mal interpréter les guillemets doubles incorporés dans la structure JSON, vous devez également échapper (ajouter une barre oblique inverse \ avant) chaque guillemet double " dans la structure de données JSON elle-même, comme dans l’exemple suivant.

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

Seuls les guillemets doubles les plus à l’extérieur ne sont pas placés dans une séquence d’échappement.