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

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.