> Tech > 5. Faites bon usage des doubles guillemets

5. Faites bon usage des doubles guillemets

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Les doubles guillemets (") semblent être une source fréquente de confusion pour les auteurs de scripts shell. Or les guillemets sont tout simplement un moyen d’identifier des arguments de ligne de commande qui contiennent des espaces.

Par exemple, bien qu’elle semble correcte, la ligne de commande dir C:\Program

5. Faites bon usage des doubles guillemets

Files donne à la commande Dir deux arguments : C:\Program et Files. Pour indiquer que C:\Program Files ne constitue qu’un seul argument (y compris l’espace), placez-le entre des double guillemets : dir "C:\Program Files"

Les guillemets ne font pas partie du nom de répertoire. Ils indiquent à la commande Dir que le texte qu’ils délimitent est un argument. Les scripts shell acceptent aussi des arguments ligne de commande. Pour accéder aux arguments ligne de commande d’un script, utilisez la notation %n (où n est un chiffre de 0 à 9). Cette notation est appelée paramètre remplaçable (ou simplement paramètre).

Par exemple, le script remplacera le paramètre %1 par le premier argument ligne de commande, %2 par le deuxième argument, et ainsi de suite. En plus de %1 à %9, %0 est remplacé par le nom du script et %* est remplacé par la ligne de commande entière du script (en excluant le nom du script). Je mentionne ici les arguments ligne de commande parce que, quand Cmd.exe remplace les paramètres %1 à %9 par les arguments ligne de commande correspondants, elle laisse les doubles guillemets s’ils sont dans l’argument.

D’où une observation simple : un paramètre de script sera toujours placé entre des guillemets doubles qui contient des espaces. Les règles simples suivantes sont fondées sur cette observation et en les respectant scrupuleusement, vous éliminerez la plupart des problèmes de guillemets de vos scripts shell.

• Ne mettez pas des guillemets de part et d’autre des paramètres script (%1 à %9) parce qu’ils pourraient déjà contenir des guillemets. S’il faut utiliser un paramètre avec la commande If, utilisez d’autres caractères que les doubles guillemets (par exemple, des accolades) pour éviter les erreurs de syntaxe. La ligne de script suivante fonctionnera même si le premier paramètre (%1) contient des guillemets: If (%1)=={} Goto:HELP Exception à cette règle : quand on utilise la syntaxe %~n pour supprimer les guillemets d’un paramètre (que j’expliquerai dans la prochaine règle).

• N’incluez pas de guillemets dans le contenu d’une variable d’environnement. En effet, les variables d’environnement peuvent contenir des espaces sans avoir besoin de guillemets. S’il faut copier un paramètre dans une variable, utilisez la syntaxe %~n (où n est un chiffre de 1 à 9), qui renvoie le paramètre sans guillemets. Par exemple, la ligne Set DATAFILE=%~1 copiera le premier paramètre du script (sans guillemets) dans la variable DATAFILE. Cette règle souffre une exception si vous créez un texte entre guillemets qui sera transmis à une autre commande.

• N’oubliez pas de mettre des guillemets de part et d’autres des variables d’environnement si nécessaire. Soit les lignes de script suivantes : Set TARGET=%~2 Copy %1 "%TARGET%" La première de ces lignes copie le second argument du script dans la variable TARGET, en supprimant les guillemets. La seconde ligne est syntaxiquement saine parce que le paramètre %1 est déjà placé entre guillemets s’il contient des espaces, et la variable TARGET a besoin de guillemets parce qu’elle pourrait contenir des espaces.

Téléchargez cette ressource

Guide de technologie 5G pour l’entreprise

Guide de technologie 5G pour l’entreprise

Pourquoi la 5G est-elle faite pour votre entreprise ? La 5G peut améliorer la vitesse, la fiabilité et la capacité de votre réseau, permettant ainsi une meilleure collaboration, une productivité accrue et une prise de décision plus rapide. Notre livre blanc " The Big Book of Enterprise 5G" vous fournit les informations stratégiques dont vous avez besoin pour prendre des décisions éclairées et préparer votre entreprise à prospérer dans l'ère de la 5G. Cradlepoint, part of Ericsson est le leader mondial des solutions de réseau sans fil 4G LTE et 5G fournies via le cloud. Connectez vos employés, lieux et objets avec la 4G LTE et la 5G pour un WAN sans fil d'entreprise.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010