Les variables shell


Substitution de variables

Décrit le mécanisme de substitution de variable que propose le shell bash Linux

Une possibilité puissante du shell est ce que l’on appelle la substitution de variables qui permet, par exemple, de renvoyer une valeur par défaut lorsqu’une variable n’est pas définie ou ne renvoyer qu’une partie (fragment) de son contenue à partir d’une expression.


 Définir une valeur par défaut

Expression : ${variable:-valeur}

Cette expression permet de renvoyer une valeur à la place d’une variable vide.

Définissons une variable :

$>f=mon_fichier.txt

Puis, utilisons l’expression :

$>echo "le fichier est ${f:-fichier_defaut.txt}"
le fichier est mon_fichier.txt

f est défini donc, c’est son contenu qui est renvoyé.

Supprimons maintenant la variable f

$>unset f

Puis, ré-utilisons la même expression :

$>echo "le fichier est: ${f:-fichier_defaut.txt}"
le fichier est: fichier_defaut.txt

C’est la valeur par défaut définie dans l’expression qui est renvoyée.

Affichons maintenant le contenu de f :

$>echo $f
         

Nous voyons que la variable f n’a pas été modifiée et qu’elle est toujours vide.

Expression : ${variable:=valeur}

Cette expression permet également de renvoyer une valeur par défaut, mais à la différence que celle ci sera injectée dans la variable.

Reprenons l’exemple précédent mais en utilisant la nouvelle expression :

$>f=mon_fichier.txt
$>echo "le fichier est: ${f:=fichier_defaut.txt}"
le fichier est: mon_fichier.txt
$>unset f
$>echo "le fichier est: ${f:=fichier_defaut.txt}"
le fichier est: fichier_defaut.txt
$>echo $f
fichier_defaut.txt

Nous voyons avec le dernier affichage, que f a été initialisé avec la valeur par défaut.

Expression : ${variable:+valeur}

Si la variable n’est pas vide, valeur est renvoyée et si variable est vide, n’affiche rien.

$>var=toto
$>echo "var: ${var:+titi}"
var: titi
$>unset var
$>echo "var: ${var:+titi}"
var:

Nous avons vérifié que la valeur est substituée uniquement lorsque la variable est définie.

Expression : ${variable:?message}

Si variable n’est pas définie, renvoi message

exemple :

$>var=10
$>echo "var: ${var:?non defini}"
var: 10
$>unset var
$>echo "var: ${var:?non defini}"
bash: var: non defini

On peut également se contenter du message par défaut avec la syntaxe suivante :

$>echo "var: ${var:?}"
bash: var : paramètre vide ou non défini

 Autres types de substitutions de variables

Afficher la taille d’une variable

Définissons la variable suivante :

$>v=tata/tete/titi/toto/tutu

et affichons sa taille :

$>echo ${#v}
24

 Retirer des fragments

Retirer le plus petit fragment à gauche

$>v=tata/tete/titi/toto/tutu
$>echo ${v#*/}
tete/titi/toto/tutu

Tous les caractères jusqu’au premier caractère / compris en partant du début, ont été retirés.

Retirer le plus grand fragment à gauche

$>v=tata/tete/titi/toto/tutu
$>echo ${v##*/}
tutu

Tous les caractères jusqu’au dernier caractère / compris en partant de la gauche, ont été supprimés.

Retirer le plus petit fragment à droite

$>v=tata/tete/titi/toto/tutu
$>echo ${v%/*}
tata/tete/titi/toto

A retiré tous les caractères depuis le dernier caractère / de la chaîne.

Retirer le plus grand fragment à droite

$>v=tata/tete/titi/toto/tutu
$>echo ${v%%/*}
tata

A retiré tous les caractères depuis le premier caractère / de la chaîne.

Remarque : Les commandes précédentes ne modifient pas le contenu de la variable.

 Conclusion

Vous trouverez de nombreux exemples d’utilisation des substitutions de caractères principalement dans les scripts shell.


Article n° 86

Crée par: chris

Créé le: 5 avril 2017

Modifié le: 18 octobre 2017

Nombre de visites: 150

Popularité: 33 %

Popularité absolue: 1

Mots clés de cet article


SPIP

2003-2020 LePpf
Plan du site | | Contact | RSS 2.0

Visiteurs connectés : 1

Nombre moyen de visites quotidiennes sur le site: 138