9.8. Génération de chaînes de caractères

Bash offre la possibilité de créer automatiquement une liste de chaînes de caractères à l’aide de la syntaxe générale suivante : [préfixe]{chaîne1,[chaîne2 …]}[suffixe]

Entre la paire d’accolades, les chaînes doivent être séparées par une virgule (pas de caractère espace par exemple). Au moins un caractère virgule doit être présent entre les accolades.

Ce mécanisme de substitution très particulier prend tout son sens lorsqu’il est utilisé avec un préfixe : préfixe{chaîne1,chaîne2 …}

La chaîne résultat est alors constituée de toutes les combinaisons <préfixe><chaîne_i> possibles. Cette syntaxe est utilisée, par exemple, pour créer en une seule commande une suite de répertoires en mentionnant une seule fois le chemin du répertoire destination.

$ mkdir –p Projets/P1/{src,include,bin}
$ 
$ ls -l Projets/P1
total 12
drwxrwxr-x 2 sanchis sanchis 4096 avril  1 08:07 bin
drwxrwxr-x 2 sanchis sanchis 4096 avril  1 08:07 include
drwxrwxr-x 2 sanchis sanchis 4096 avril  1 08:07 src
$

L’option –p de la commande unix mkdir crée les répertoires Projets et P1 s’ils n’existaient pas.

L’option braceexpand de la commande interne set permet d’activer ou d’inhiber la substitution d’accolades.

$ set -o | grep braceexpand
braceexpand    	on			=> le mécanisme est déjà activé
$ 
$ set +o braceexpand			=> désactivation 
$ 
$ echo {coucou,}
{coucou,}
$