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.
