> Tech > 5. Faites bon usage des doubles guillemets

5. Faites bon usage des doubles guillemets

Tech - Par iTPro - 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 gratuitement cette ressource

Les 7 étapes d’un projet de dématérialisation RH

Les 7 étapes d’un projet de dématérialisation RH

Dans ce livre blanc, nous vous donnons les clés pour concevoir votre projet de dématérialisation RH. Vous découvrirez chacune des étapes qui vous permettront d’apporter de nouveaux services aux collaborateurs, de vous adapter aux nouvelles pratiques et de renforcer la marque employeur.

Tech - Par iTPro - Publié le 24 juin 2010