EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire


Conforme à XHTML 1.0 Strict Conforme à CSS!

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

Les expansions et substitutions dans le bash

Historique

13 mars 2012 : Création de cette page.
28 août 2012 : Complément avec les opérations mathématiques.

Difficulté

Pour : un esprit logique et curieux.

 Introduction

On appelle couramment "expansion" le fait que bash remplace un élément par un autre élément (une substitution). Exemple, les variables :
nombre=3 la variable nombre prend la valeur 3
dans $nombre bash substitue la valeur de la variable au nom de la variable

 Utiliser les jockers

Dans l'écriture des commandes, vous pouvez utiliser un caractère jocker, c'est-à-dire un caractère qui remplace un ou plusieurs caractères classiques.
Un exemple est plus parlant : copier depuis le répertoire courant, vers un autre répertoire, tous les fichiers qui ont l'extension .txt
cp *.txt /autre/repertoire/

Ici le jocker * est utilisé. * remplace n'importe quels caractères, quel qu'en soit le nombre.

JockerUsageExempleSignification
*remplace 0, 1 ou plusieurs caractèresls *.docliste tous les fichiers .doc
?remplace 1 caractèrels *.do?liste tous les fichiers .doc et .dot, par exemple
Haut

 Utiliser les accolades

Les accolades permettent de s'éviter de retaper des morceaux de commandes. Trois exemples sont plus parlants :

touch texte{1,2,3} va créer 3 fichiers nommés respectivement texte1, texte2 et texte3.

touch texte{1..3} aurait également créé ces 3 fichiers.

rm texte{1..3} va supprimer ces 3 fichiers.

 Expansion et substitution des variables

Bash offre maintenant des possibilités très appréciables en matière de substitution, extraction et suppression.

Soit une variable var="bonjour, le monde, tout le monde."

Haut

 Opérations mathématiques

Bash permet également de faire des évaluations mathématiques sur des entiers.
Plusieurs formes sont possibles : ((expression)), $((expression)), $[expression]

Bash évalue l'expression qui peut utiliser beaucoup d'opérateurs, dont les plus courants : +,-, *, /, % (reste), ** (exponentielle). Exemples :
((val = val + 8)) ajoute 8 à val. Notez l'absence de $ pour la variable.
$((val + 8))calcule le résultat, mais ne change pas la valeur de la variable val.
$[val + 8]calcule le résultat, mais ne change pas la valeur de la variable val.
echo $((++val))incrémente la variable, puis l'affiche.
echo $((val++))affiche la variable, puis l'incrémente.

la commande ((expression)) peut également être utilisée dans un test (simple ou avec if/then/fi) :
((val + 8 == val2)) && ....

Haut