Variables shell
On montre ici la création de variables avec les shell de type sh
qui sont très utilisés comme bash (le shell par défaut sous des distribution Linux comme Ubuntu ou Debian), zsh (le shell par défaut sous mac) ou ksh (le shell par d´´faut d'OpenBSD).
Création de variables
Il faut commencer par créer une variable :
var=valeur
Puis on peut l'afficher en précédant sont nom d'un ${} :
echo ${var}
Il n'est pas nécessaire d'utiliser les {}
(echo $var
fonctionne) mais prenez l'habitude de le faire, cela permet :
- d'être plus clair
- décrire des choses comme
echo ${var}2
Il est possible d'utiliser les variables partout ! Ce sont des méta-caractères du shell et sont donc remplacés par leurs valeurs avant l'exécution de la commande. Il est donc envisageable (et c'est souvent fait) de faire ce genre de choses :
v=ls
${v}
Si toto=titi
Quelle est la différence entre les commandes suivantes :
echo toto
echo $toto
echo $toto2
echo ${toto}2
echo "${toto}"
echo '${toto}'
solution
solution
Va afficher :
toto
titi
- ``
titi2
titi
${toto}
Les variables sont utilisables dans tout le shell, mais ne sont pas transmises au process enfant :
toto=titi
bash
echo ${toto}
Il faut promouvoir les variables en variables d'environnement pour qu'elles soient transmises :
toto=titi
export toto
bash
echo ${toto}
On peut créer et promouvoir une variable en une seule opération :
export toto=titi
On peut modifier/créer plusieurs variables en les séparant par des espaces (pas un ;
qui est le métacaractère shell de séparation de commande):
V1=v1 V2=v2 commande
Supprimer une variable
Avec unset
:
toto=titi
echo ${toto}
unset toto
echo ${toto}
Visualisation des variables
Avec la commande shell set
.
Existence d'une variable
Il n'y a pas de réel moyen de savoir si une variable existe ou pas. Par exemple echo ${n_existe_pas}
ne produira pas d'erreur, le métacaractère ${n_existe_pas}
étant juste remplacé par la chaîne vide.