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/
total 12
drwxr-xr-x 2 sanchis sanchis 4096 27 mars  14:06 P1_bin
drwxr-xr-x 2 sanchis sanchis 4096 27 mars  14:06 P1_include
drwxr-xr-x 2 sanchis sanchis 4096 27 mars  14:06 P1_src
$ 

L’option –p de la commande unix mkdir crée les répertoires Projets, P1_bin, P1_include et P1_src 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é
$ 
$ echo {coucou,}
coucou
$
$ set +o braceexpand			=> désactivation 
$
$ echo {coucou,}
{coucou,}
$