Le Blog de C-quad

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.

5 réponses à to “Shell – Opérateur sur les variables”

  • barmic:

    > 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.

    Ça se fait très bien dans un man 🙂

    D’ailleurs ça permet d’en voir d’autres comme :

    % echo ${VARIABLE/Ced/Bar}
    /home/Bar/essai_Ced.txt
    % echo ${VARIABLE//Ced/Bar}
    /home/Bar/essai_Bar.txt
    % echo ${VARIABLE^^*}
    /HOME/CED/ESSAI_CED.TXT
    % echo ${VARIABLE,,*}
    /home/ced/essai_ced.txt
    % echo ${VARIABLE:4:10}
    e/Ced/essa

    Entre autre 🙂

  • Pour info, “pattern” ça se dit « motif » en français, dans ce contexte.

    • Pouce:

      … faut arrêter de vouloir tout franciser ! C’est contre-productif à souhait. L’informatique, c’est des termes anglais pour décrire les choses. Si on commence à mettre nos langues propres pour décrire des choses, ça devient vite babel et c’est incompréhensible pour tous !

      Ex : On parle de web, pas de toile, on parle de serveur proxy, pas de serveur mandataire…

  • alan:

    Bien le bonjour ! Je figurerai dorénavant parmi vos « suiveurs » sur Twitter. En effet, j’ai trouvé que ce billet est très édifiant. René

Laisser un commentaire