Introduction à la programmation en Bash

Historique des versions
Version 0.3 mars 2022E. Sanchis
Version 0.2 juillet 2015E. Sanchis
Version 0.125 mai 2007E. Sanchis

Résumé

Cette introduction à la programmation en Bash présente les principales constructions syntaxiques de bash utilisées dans l’écriture des programmes shell (scripts shell). L’objectif premier a été de laisser de côté les redondances syntaxiques de ce langage de programmation, la subtilité des mécanismes de l’interpréteur, afin d’insister sur quelques concepts synthétiques tels que la substitution, la redirection ou le filtrage.

Ce cours étant loin d’être parfait [1], j’encourage le lecteur à me faire parvenir ses remarques ou suggestions, ainsi qu’à me signaler toute inexactitude ().

Plate-forme logicielle utilisée : interpréteur bash 5.1, système PC/Debian 11.2

Version 0.3 en pdf accompagnée d'exercices.



[1] Les exemples ont pour but d’illustrer les notions traitées. Il n’est donné aucune garantie quant à leur fonctionnement ou leurs effets.


Table des matières

1. Introduction à Bash
1.1. Les shells
1.1.1. Un environnement de travail
1.1.2. Un langage de programmation
1.1.3. Atouts et inconvénients des shells
1.1.4. Shell utilisé
1.2. Syntaxe d’une commande
1.3. Commandes internes et externes
1.3.1. Commandes internes
1.3.2. Commandes externes
1.4. Modes d’exécution d’une commande
1.4.1. Exécution séquentielle
1.4.2. Exécution en arrière-plan
1.5. Commentaires
1.6. Fichiers shell
2. Substitution de paramètres
2.1. Variables
2.1.1. Affectation
2.1.2. Variable en « lecture seule »
2.1.3. Variables d'environnement
2.2. Paramètres de position et paramètres spéciaux
2.2.1. Paramètres de position
2.2.2. Paramètres spéciaux
2.2.3. Commande interne shift
2.2.4. Paramètres de position et fichiers shell
2.2.5. Paramètres spéciaux * et @
2.3. Suppression des ambiguïtés
2.4. Paramètres non définis
2.5. Suppression de variables
2.6. Indirection
2.6.1. Indirection par substitution
2.6.2. Variables nameref
3. Substitution de commandes
3.1. Présentation
3.2. Substitutions de commandes et paramètres régionaux
4. Caractères et expressions génériques
4.1. Caractères génériques
4.1.1. Le caractère *
4.1.2. Le caractère ?
4.1.3. Les caractères []
4.2. Expressions génériques
4.3. Autres options relatives aux caractères et expressions génériques
5. Redirections élémentaires
5.1. Descripteurs de fichiers
5.2. Redirections élémentaires
5.2.1. Redirection de la sortie standard
5.2.2. Redirection de la sortie standard pour les messages d'erreur
5.2.3. Redirection de l'entrée standard
5.2.4. Redirections séparées des entrées / sorties standard
5.2.5. Texte joint
5.2.6. Chaîne jointe
5.2.7. Fermeture des entrées / sorties standard
5.3. Tubes
5.3.1. Pipelines
5.3.2. Tubes et chaînes jointes
5.4. Substitution de processus
6. Groupement de commandes
7. Code de retour
7.1. Paramètre spécial ?
7.2. Code de retour d'un programme shell
7.3. Commande interne exit
7.4. Code de retour d'une suite de commandes
7.5. Code de retour d’une commande lancée en arrière-plan
7.6. Résultats et code de retour
7.7. Opérateurs && et || sur les codes de retour
8. Structures de contrôle case et while
8.1. Choix multiple case
8.2. Itération while
9. Chaînes de caractères
9.1. Protection de caractères
9.1.1. Mécanismes
9.1.2. Exemples d’utilisation
9.2. Longueur d'une chaîne de caractères
9.3. Modificateurs de chaînes
9.4. Extraction de sous-chaînes
9.5. Remplacement de sous-chaînes
9.6. Transformation en majuscules/minuscules
9.7. Formatage de chaînes
9.8. Génération de chaînes de caractères
10. Structures de contrôle for et if
10.1. Itération for
10.2. Choix if
10.2.1. Fonctionnement
10.2.2. Commande composée [[
11. Entiers et expressions arithmétiques
11.1. Variables de type entier
11.2. Représentation d’une valeur de type entier
11.3. Intervalles d’entiers
11.4. Commande interne ((
11.5. Valeur d'une expression arithmétique
11.6. Opérateurs
11.7. Structure for pour les expressions arithmétiques
11.8. Exemple : les tours de Hanoi
12. Tableaux
12.1. Tableaux classiques
12.1.1. Définition et initialisation
12.1.2. Opérations sur un élément de tableau classique
12.1.3. Opérations sur un tableau classique
12.2. Tableaux associatifs
12.2.1. Définition et initialisation
12.2.2. Opérations sur un élément de tableau associatif
12.2.3. Opérations sur un tableau associatif
13. Alias
13.1. Création d’un alias
13.2. Suppression d’un alias
13.3. Conclusion
14. Fonctions shell
14.1. Définition d’une fonction
14.2. Suppression d’une fonction
14.3. Trace des appels aux fonctions
14.4. Arguments d’une fonction
14.5. Variables locales à une fonction
14.6. Commande interne return
14.7. Transmission du résultat d'une fonction
14.7.1. Utilisation d'une variable nameref
14.7.2. Substitution de fonction
14.8. Fonctions récursives
14.9. Exporter une fonction
14.10. Appels de fonctions dispersées dans plusieurs fichiers