Outils pour utilisateurs

Outils du site


cours:informatique:fun_mooc:maitrise_du_bash_univ-reunion:230_constructions_syntaxiques

Shell Bash: constructions syntaxiques

Le shell est un interpréteur de ligne de commande. Entre le moment de la saisie de l'utilisateur et l'exécution de la commande, différents traitements sont opérés.

L'invite de commande indique que le shell est prêt à recevoir la saisie de l'utilisateur. Celle-ci est assistée par les fonctions d'éditions abordées précédemment. Dès que la touche retour charriot est frappée, le shell analyse la ligne de commande, cela consiste à identifier la commande et ses arguments. Les arguments peuvent introduire des constructions syntaxiques comme la substitution des caractères spéciaux. Dans ce cas, l’interprétation de ces construction est effectuée afin de les substituer par leur valeur. Finalement la commande avec les arguments substitués est invoquée.

Ici on détaille les différentes constructions syntaxiques existantes et les cas d'utilisation.

Substitution de variable

Une valeur peut être conservée dans une variable. Le caractère '=' est utilisé pour l'affectation d'une valeur à une variable.

# Affectation d'une valeur a une variable
PI=3.14
MSG="Hello Bash"
Ne pas introduire d'espaces entre le nom de la variable, l'opérateur d'affectation et la valeur.

Pour utiliser la valeur de la variable, on préfixe le nom de celle-ci par le caractère spécial '$'

echo $MSG

Le caractère $ est spécial, c'est un métacaractère qui indique au shell Bash d'effectuer une substitution de variable qui consiste à changer le nom de la variable qui suit le caractère $ par sa valeur.

Par défaut l'accès à une variable non définie ne produit pas d'erreur et retourne une chaîne vide. Se comportement peut être modifié par un paramétrage du shell.

Substitution de commande

La sortie d'une commande peut être substituée aux syntaxes suivantes:

# commande entre backquotes
`commande`
 
# équivalent
$(commande)

Cela permet d'imbriquer des traitements. La commande est évaluée, sa sortie est ensuite intégrée en argument d'une autre commande:

# La commande echo est invoquée après substitution de
# la commande pwd
 
echo "Nous sommes dans le répertoire" $(pwd)
 
# La substitution de commande permet d'affecter
# la valeur retournée par la commande pwd à la
# variable CURRENT_DIR
 
CURRENT_DIR=$(pwd)

Contrôle et inhibition des substitutions

  • Toute chaîne de caractères encadrée par des apostrophes n'est pas interprétée: l' inhibition est dite totale.
  • L'utilisation des guillemets permet de maintenir les substitutions de variables et de commandes: la substitution est qualifiée de partielle. Dans ce cas, la substitution des noms de fichiers et la fonction de séparation des caractères espace sont inhibés.
  • Pour inhiber l'interprétation d'un caractère spécial, on utilise le caractère '\'. Un usage courant est l'inhibition de la fonction de séparateur de mot du caractère espace.

Le tableau ci-dessous indique pour l’inhibition totale(première ligne) et l’inhibition partielle (seconde ligne) les caractères spéciaux interprétés, autrement dit les substitutions ou les inhibitions appliquées. Le caractère ’$’ symbolise la substitution de variable et de commande. Le terme glob indique la substitution de nom de fichier.

' \ $ glob
Inhibition totale (’) fin inhibé inhibé inhibé inhibé
Inhibition partielle (”) inhibé fin interprété interprété inhibé

Ainsi au sein d'une inhibition partielle, l'apostrophe (’) perd sa signification spéciale: autrement dit, il n’y a pas de substitution totale dans une substitution partielle.

Étapes de substitution

Les constructions syntaxiques sont traitées par le shell Bash lors de la phase d'interprétation effectuée après validation de la saisie de l'utilisateur. Les différentes étapes de substitutions sont les suivantes:

  1. Substitutions de variables;
  2. Substituons de commandes;
  3. Substitution des caractères spéciaux désignant les noms de fichiers;

Pour effectuer les substitutions dans un ordre différent ou pour appliquer deux fois de suite le même type de substitution, c'est la commande interne eval qui doit être utilisée. Cette commande relance la phase d’interprétation du shell.

# Définition des variables
x=100
ptr=x
 
# Substitution de ptr par sa valeur puis affichage
echo $ptr
x
 
# la phase de substitution a lieu une seule fois,
# la valeur affichée correspond au nom de la variable
# mais pas à son contenu
echo \$$ptr
$x
 
# La commande interne eval permet de relancer la phase
# de substitution de variable une seconde fois
# sur le nom de variable précédemment obtenu
eval echo \$$ptr
100
cours/informatique/fun_mooc/maitrise_du_bash_univ-reunion/230_constructions_syntaxiques.txt · Dernière modification : 2021/03/27 13:02 de 77.192.232.26