Introduction
Bonjour à tous ! Aujourd’hui, on va plonger dans les fondamentaux du scripting Bash.
Tu as sûrement déjà tapé quelques commandes dans ton terminal, mais écrire un script Bash, c’est une autre histoire : il faut comprendre la structure, les variables, et un peu de logique.
Dans ce projet, on va explorer toutes les formes de variables Bash — simples, d’environnement, positionnelles, spéciales, et prédéfinies — sans oublier deux piliers essentiels : le shebang et les commentaires.
On terminera par des cas pratiques avec set et shift, deux commandes souvent sous-estimées mais indispensables à tout bon script.
🧩 Le Shebang (#!) : la première ligne de tout script Bash
Le shebang (ou “hashbang”) est cette mystérieuse ligne tout en haut du script :
#!/bin/bash
Elle indique au système quel interpréteur doit exécuter ton script.
Sans elle, ton script risque d’être interprété avec un shell différent (ex : sh, dash, zsh), ce qui peut casser certaines syntaxes.
Variantes courantes
#!/bin/bash→ classique, appelle directement Bash.#!/usr/bin/env bash→ plus portable, cherche Bash dans le PATH.#!/bin/sh→ plus minimaliste, compatible avec le shell POSIX.
Exemple pratique
#!/usr/bin/env bash
echo "Script exécuté avec Bash !"
Enregistre le fichier mon_script.sh, rends-le exécutable (chmod +x mon_script.sh) et exécute-le directement :
./mon_script.sh
💡 Astuce : un script sans shebang peut encore être lancé via
bash mon_script.sh, mais ce n’est pas recommandé pour des scripts système ou d’automatisation.
💬 Les commentaires en Bash
Les commentaires servent à documenter ton code pour toi (dans 6 mois) et pour les autres.
Ils commencent toujours par le caractère #.
# Ceci est un commentaire
echo "Hello World" # Ceci aussi est un commentaire
Blocs de commentaires simulés
Bash ne possède pas de vrai bloc multi-ligne, mais on peut simuler :
: <<'COMMENTAIRE'
Tout ce bloc sera ignoré
par Bash à l’exécution
COMMENTAIRE
Exemple de header standard
#!/usr/bin/env bash
# ========================================================
# Script Name : backup_home.sh
# Description : Sauvegarde du dossier personnel
# Author : Admin
# Version : 1.0
# ========================================================
✨ Bonne pratique : documente toujours l’objectif du script et les arguments attendus.
⚙️ Les variables en Bash : comprendre toutes les familles
1️⃣ Variables simples (définies par l’utilisateur)
Elles se déclarent sans espaces autour du signe = :
NOM="Alice"
echo "Bonjour $NOM"
Sans guillemets, les espaces sont un cauchemar :
PRENOM=Jean
NOM_DE_FAMILLE=Dupont
echo $PRENOM $NOM_DE_FAMILLE
Pour garantir la fiabilité : toujours utiliser "${VAR}".
Les variables existent uniquement dans le shell courant, sauf si on les exporte :
export NOM
💡 Cela permet à des sous-processus (autres scripts ou programmes) de lire la variable.
2️⃣ Variables d’environnement
Elles sont fournies par le système et visibles via env ou printenv.
Elles influencent le comportement global du shell.
| Variable | Description |
|---|---|
$PATH | Liste des répertoires où Bash cherche les exécutables |
$HOME | Répertoire personnel de l’utilisateur |
$USER | Nom de l’utilisateur courant |
$PWD | Répertoire actuel |
$SHELL | Interpréteur par défaut |
$LANG | Langue du système |
Exemple
echo "Votre répertoire personnel est : $HOME"
export PATH=$PATH:/opt/scripts
🔧 Modifier le
PATHpermet d’ajouter de nouveaux chemins où Bash cherchera tes scripts.
3️⃣ Variables positionnelles
Elles représentent les arguments passés au script.
| Variable | Rôle |
|---|---|
$0 | Nom du script |
$1, $2… | Premier, deuxième, etc. argument |
$# | Nombre total d’arguments |
$@ ou $* | Liste de tous les arguments |
Exemple

#!/usr/bin/env bash
echo "Nom du script : $0"
echo "Premier argument : $1"
echo "Nombre d'arguments : $#"
Exécution :
./test.sh fichier1.txt fichier2.txt
Utilisation de shift
La commande shift décale les arguments :
#!/usr/bin/env bash
while [ $# -gt 0 ]; do
echo "Argument : $1"
shift
done
🧠 Très pratique pour lire les arguments un par un sans te soucier du nombre.
4️⃣ Variables spéciales et prédéfinies
Bash possède une série de variables internes très utiles.
| Variable | Signification |
|---|---|
$$ | PID du script (Process ID) |
$? | Code de retour de la dernière commande |
$! | PID du dernier processus lancé en arrière-plan |
$_ | Dernière variable utilisée |
$- | Options actuellement activées dans le shell |
Exemple
#!/usr/bin/env bash
echo "PID du script : $$"
ls /non_existant
echo "Code de retour : $?"
💡
$?te permet de savoir si une commande a réussi (0 = succès, >0 = erreur).
5️⃣ Variables internes et options de set
La commande set te permet de modifier le comportement du shell.
Voici les plus utiles :
| Option | Effet |
|---|---|
set -x | Mode debug : affiche chaque commande exécutée |
set -e | Quitte le script si une commande échoue |
set -u | Erreur si une variable non définie est utilisée |
set -o pipefail | Détecte les erreurs dans un pipeline |
Exemple
#!/usr/bin/env bash
set -euo pipefail
echo "Script robuste et sécurisé !"
🧱 Active ces options dès le début de ton script pour éviter les comportements imprévisibles.
🧠 Exercices pratiques
Exercice 1
Crée un script nommé intro_bash.sh :
- avec un shebang,
- une variable
$USER, - et un commentaire expliquant ce qu’il fait.
Objectif : afficher “Bonjour $USER”.
Exercice 2
Écris un script args.sh :
- qui prend 3 arguments,
- affiche chaque argument avec sa position.
Exemple de sortie :
Argument 1 : fichier1.txt
Argument 2 : fichier2.txt
Argument 3 : fichier3.txt
Exercice 3
Crée un script shift_demo.sh :
- lit tous les arguments passés au script,
- les affiche un par un grâce à
shift.
Exercice 4
Écris un script info_sys.sh :
- affiche le PID du script,
- le nom de l’utilisateur,
- et le code retour de la dernière commande.
💬 Retour d’expérience du lecteur
Et vous, comment utilisez-vous les variables dans vos scripts ?
Partagez vos astuces ou vos erreurs mémorables en commentaire, ça aide toute la communauté à progresser !
🧭 Conclusion
On a couvert les bases vitales du scripting Bash : le shebang, les commentaires, et toutes les catégories de variables — du $0 au $?, en passant par PATH et set -e.
Ces concepts sont la fondation de tout script robuste.
Prochaine étape : les opérateurs et structures de contrôle (if, while, for), pour automatiser des tâches plus complexes.



+ There are no comments
Add yours