Substitution de variables

Substitution de variables

By ronan, 26 novembre, 2011

Les shells BASH et KSH offrent des fonctionnalités supplémentaires au niveau des substitution de variables.

Connaitre la longueur d'une chaine d'une variable :

Syntaxe :

${#variable}

Exemple :

$ variable="Une chaine de texte"
$ echo $variable
Une chaine de texte
$ echo "La chaine contient ${#variable} caractères"
La chaine contient 19 caractères
$

Manipuler des chaines de caractères :

Exemple avec la variable suivante :

$ variable="col1|col2|col3|col4|col5"
$ echo $variable
col1|col2|col3|col4|col5
$

Cette variable est constituée de 5 segments délimités par le caractère |

Le contenu de la variable n'est jamais modifié

Exclure le premier segment

Syntaxe :

${variable#modele}

modele est une chaine de caractère incluant les caractères spéciaux *, ?, [ ], ?(expression), +(expression), *(expression), @(expression), !(expression)

Rappel des expressions pour la substitution des noms de fichiers

Le caractère # signifie "Chaine la plus courte possible en partant de la gauche"

Exemple :

$ echo ${variable#*|}
col2|col3|col4|col5
$

Conserver le dernier segment

Syntaxe :

${variable##modele}

Les caractères ## signifient "Chaine la plus longue possible en partant de la gauche"

Exemple :

$ echo ${variable##*|}
col5
$

Exclure le dernier segment

Syntaxe :

${variable%modele}

Le caractère % signifie "Chaine la plus courte possible en partant de la droite"

Exemple :

$ echo ${variable%|*}
col1|col2|col3|col4
$

Conserver le premier segment

Syntaxe :

${variable%%modele}

Les caractères %% signifient "Chaine la plus longue possible en partant de la droite"

Exemple :

$ echo ${variable%%|*}
col1
$

En bash, ne pas oublier d'activer l'option extglob avec la commande shopt -s extglob afin de permettre au shell d'interpréter les modèles utilisant les expressions complexes.