Les modificateurs de chaînes permettent la suppression d'une sous-chaîne de caractères correspondant à un modèle exprimé à l'aide de caractères ou d’expressions génériques.
Suppression de la plus courte sous-chaîne à gauche
Syntaxe : ${paramètre#modèle}
$ echo $PWD /home/sanchis $ $ echo ${PWD#*/} home/sanchis => le premier caractère / a été supprimé $ $ set "82a34a" $ $ echo ${1#*a} 34a => suppression de la sous-chaîne 82a $
Suppression de la plus longue sous-chaîne à gauche
Syntaxe : ${paramètre##modèle}
$ echo $PWD /home/sanchis $ $ echo ${PWD##*/} sanchis => suppression de la plus longue sous-chaîne à gauche se terminant par le caractère / $ $ set 72a34ab $ $ echo ${1##*a} b $
Suppression de la plus courte sous-chaîne à droite
Syntaxe : ${paramètre%modèle}
$ echo $PWD /home/sanchis $ echo ${PWD%/*} => suppression de la sous-chaîne /sanchis /home $
Suppression de la plus longue sous-chaîne à droite
Syntaxe : ${paramètre%%modèle}
Dans l'exemple ci-dessous, la variable eleve contient les prénom, nom et diverses notes d'un élève. Les différents champs sont séparés par un caractère deux-points. Il peut manquer des notes à un élève (cela se caractérise par un champ vide).
$ eleve="Pierre Dupont::12:10::15:9" $ $ echo ${eleve%%:*} => extraction du prénom et nom Pierre Dupont $
Si paramètre est le paramètre spécial @, le modificateur est appliqué à la valeur de tous les paramètres de positions initialisés.
$ set Anne:1.71 Pierre:1.68 Marie:1.73 $ $ echo ${@#*:} 1.71 1.68 1.73 $ $ echo ${@%:*} Anne Pierre Marie $