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
PATH
permet 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.