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
$