Scripting Bash pour les debutants - guide complet
Le scripting Bash est la compétence qui transforme un administrateur système en véritable ingénieur DevOps. Automatiser des tâches répétitives, orchestrer des déploiements, surveiller des services — tout cela repose sur la maîtrise de Bash. Ce guide vous amène de la première ligne de script jusqu'aux patterns avancés utilisés en production.
Prérequis : Connaître les commandes de base Linux. Si ce n'est pas le cas, commencez par notre guide des 50 commandes Linux essentielles.
Qu'est-ce qu'un script Bash ?
Un script Bash est un fichier texte contenant une suite de commandes Linux exécutées automatiquement par l'interpréteur bash.
#!/bin/bash
echo "Bonjour, monde !"
date
whoamiLa première ligne #!/bin/bash s'appelle le shebang. Elle est obligatoire.
Créer et exécuter son premier script
touch mon-script.sh
chmod +x mon-script.sh
nano mon-script.sh
./mon-script.shVariables
#!/bin/bash
NOM="Alice"
AGE=30
AUJOURD_HUI=$(date +%Y-%m-%d)
echo "Bonjour $NOM, vous avez $AGE ans"
echo "Nous sommes le $AUJOURD_HUI"
echo "Script : $0 | Args : $# | PID : $$ | Code retour : $?"Conditions — if / elif / else
#!/bin/bash
AGE=20
if [[ $AGE -ge 18 ]]; then
echo "Majeur"
elif [[ $AGE -ge 13 ]]; then
echo "Adolescent"
else
echo "Enfant"
fi
# Opérateurs : -eq -ne -lt -le -gt -ge (nombres)
# == != -z (vide) -n (non vide) (chaînes)Tests sur les fichiers
if [[ -f "/etc/passwd" ]]; then echo "fichier existe"; fi
if [[ -d "/var/log" ]]; then echo "c'est un dossier"; fi
if [[ -r "/etc/passwd" ]]; then echo "lisible"; fi
if [[ ! -e "/tmp/test.txt" ]]; then echo "n'existe pas"; fi
# -f fichier -d dossier -e existe -r lisible -w modifiable -x exécutableBoucles
# Boucle for sur une liste
for FRUIT in pomme banane cerise; do
echo "Fruit : $FRUIT"
done
# Boucle numérique
for i in {1..10}; do echo "Étape $i"; done
# While avec compteur
COMPTEUR=0
while [[ $COMPTEUR -lt 5 ]]; do
echo "Compteur : $COMPTEUR"
((COMPTEUR++))
done
# Lire un fichier ligne par ligne
while IFS= read -r LIGNE; do
echo "$LIGNE"
done < /etc/hostsFonctions
#!/bin/bash
sauvegarder() {
local SOURCE="$1"
local DEST="$2"
[[ ! -d "$SOURCE" ]] && { echo "ERREUR : $SOURCE introuvable"; return 1; }
cp -r "$SOURCE" "$DEST"
echo "Sauvegarde OK"
}
sauvegarder "/var/www" "/backup/www"
echo "Code retour : $?"Gestion des erreurs
#!/bin/bash
set -euo pipefail
# -e : arrêt sur erreur -u : erreur si variable non définie -o pipefail : erreur dans les pipes
cleanup() { echo "Nettoyage..."; rm -f /tmp/lock.$$; }
trap cleanup EXIT ERR
cp fichier.txt /backup/ || { echo "Erreur copie"; exit 1; }Script de déploiement — exemple complet
#!/bin/bash
set -euo pipefail
APP_DIR="/var/www/monapp"
BRANCH="${1:-main}"
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"; }
erreur() { echo "[ERREUR] $1" >&2; exit 1; }
log "=== Déploiement branche $BRANCH ==="
cd "$APP_DIR"
git pull origin "$BRANCH"
npm ci --production
systemctl restart monapp
log "=== Déploiement terminé ==="Bonnes pratiques
- Toujours commencer par
set -euo pipefail - Utiliser
localdans les fonctions - Toujours quoter les variables :
"$VAR" - Préférer
[[à[pour les tests - Tester avec
bash -n script.shetshellcheck script.sh
Pratiquer sur un vrai terminal
Notre formation Linux inclut 12 labs dédiés au scripting Bash avec validation automatique et tuteur IA disponible 24/7.
Passez à la pratique
Cet article vous a donné les bases. Maintenant, pratiquez chaque commande sur un vrai terminal avec nos labs interactifs guidés.
Commencer les labs Linux