Le Blog de C-quad

Archive pour juin 2012

Shell – Opérateur sur les variables

Aujourd’hui, je vais vous parler des opérateurs sur les variables shell. C’est loin d’être une nouveauté, ces opérateurs existent depuis le début du shell, mais je me rends compte que les opérations possibles directement dans les variables restent plutôt méconnues.

Une variable shell accepte deux écritures, soit $VARIABLE ou ${VARIABLE} jusque la c’est quasi connu de tous. Mais pourquoi donc y a t’il deux écritures ?

L’une des raisons c’est qu’il est possible de réaliser des opérations sur la variable grâce à la deuxième écriture, alors que cela ne l’est pas avec la première.

Prenons un exemple :

$ VARIABLE=/home/Ced/essai_Ced.txt

Comme $# retourne le nombre de paramètre reçus par un programme ${#VARIABLE} retourne le nombre de caractères de la VARIABLE soit sa longueur.

$ echo ${#VARIABLE}
23

Il est possible d’appliquer une opérande sur la variable:

Pour retirer des éléments en partant de la gauche (le début) :
C’est à dire que si l’on écrit ${VARIABLE#<pattern>} , on retire en partant de la gauche le premier pattern correspondant dans la variable.

exemple :

$  echo ${VARIABLE#*Ced}
/essai_Ced.txt

Et si l’on désire retirer le plus grand pattern correspondant, il faut doubler le #,  c’est à dire ${VARIABLE##<pattern>}

exemple :

$ echo ${VARIABLE##*Ced}
.txt

Pour retirer des éléments en partant de la droite (la fin):

C’est à dire que si l’on écrit ${VARIABLE%<pattern>}, on retire en partant de la fin le permier pattern correspondant.

exemple :

$ echo ${VARIABLE%Ced*}
/home/Ced/essai_

Et si l’on désire retirer le plus grand pattern correspondant, il faut doubler le %, c’est a dire ${VARIABLE%%<pattern>}

exemple :

$ echo ${VARIABLE%%Ced*}
/home/

PS : Cet article a aussi pour vocation de me servir comme mémo, étant donné qu’une recherche de ## ou de %% n’est pas des plus aisées dans les moteurs de recherche.