TawaKnow LogoTawaKnow
AWSDevOpsFavorisContribuer

© 2026 TawaKnow. Tous droits réservés.

Mentions LégalesPolitique de confidentialitéContribuer
Pratiques DevOps
0/29 chapitres0%
1.

Introduction au DevOps

2.

Introduction à Linux

3.

Système de Fichiers Linux

4.

Interface en Ligne de Commande (CLI)

5.

Gestionnaire de Paquets Linux

6.

Vim — Éditeur de Texte CLI

7.

Utilisateurs & Groupes Linux

8.

Permissions & Propriété des Fichiers

9.

Shell Scripting Bash

10.

Variables d'Environnement Linux

11.

Réseau Linux

12.

SSH — Secure Shell

13.

Introduction à Git & Contrôle de Version

14.

Configurer un Dépôt Git

15.

Flux de Travail Git — add, commit, push, pull

16.

Branches Git & Merge Requests

17.

Git Avancé — Commandes, .gitignore & Bonnes Pratiques

18.

Outils de Build & Gestionnaires de Paquets

19.

Build Tools, Docker & CI/CD

20.

Introduction à Nexus — Gestionnaire de Dépôts d'Artifacts

21.

Installer et Configurer Nexus sur un Serveur

22.

Nexus — Repositories, Publication et API REST

23.

Introduction aux Containers & Docker

24.

Commandes Docker & Registries

25.

Dockerfile — Créer des Images Docker

26.

Docker Compose, Volumes & Bonnes Pratiques

27.

Introduction à Jenkins & CI/CD

28.

Installer et Configurer Jenkins

29.

Jenkins Pipeline & Jenkinsfile

...Shell Scripting Bash
CoursPratiques DevOpsShell Scripting Bash
Chapitre 9/29

Shell Scripting BashShell Scripting Bash

6 min de lecture
Total: ~6 min
Progression du cours0/29 chapitres

Shell Scripting Bash

Un script shell = fichier texte contenant une séquence de commandes Linux. Au lieu de taper 50 commandes une par une, on les écrit dans un fichier .sh et on l'exécute.


Pourquoi écrire des scripts ?

Configuration manuelle d'un serveur :
  useradd tim → groupadd devops → mkdir projet → touch fichier.txt
  → chmod 750 /chemin → sudo apt install docker → docker run ...

Avec un script : ./setup-server.sh → TOUT est exécuté automatiquement
BénéficeDescription
Éviter la répétitionNe taper qu'une seule fois ce qui se répète
HistoriqueLe script documente la configuration
PartagePartager les instructions avec l'équipe
LogiqueConditions, boucles, variables
Opérations en masseConfigurer 100 serveurs identiques

Structure d'un script Bash

#!/bin/bash
# Shebang : indique à l'OS quel interpréteur utiliser

echo "Démarrage de la configuration..."

Le Shebang #!

La première ligne définit quel shell interprétera le script :

ShebangShell
#!/bin/bashBash (Bourne Again Shell) — le plus courant
#!/bin/shBourne Shell — minimal
#!/bin/zshZSH

"Shebang" = contraction de "sharp-bang" (#!) — le # se dit "sharp" et ! se dit "bang".


Créer et exécuter un script

# 1. Créer le fichier
vim setup.sh

# 2. Ajouter le contenu
#!/bin/bash
echo "Bonjour !"

# 3. Rendre exécutable (OBLIGATOIRE avant la première exécution)
chmod +x setup.sh
# ou
chmod u+x setup.sh

# 4. Exécuter
./setup.sh
bash setup.sh       # Alternative sans rendre exécutable

Variables

#!/bin/bash

# Déclarer une variable (pas d'espace autour de =)
nom="Alice"
age=30
version=$(cat /etc/os-release | grep VERSION_ID)  # Stocker la sortie d'une commande

# Utiliser une variable (avec $)
echo "Bonjour $nom, vous avez $age ans"
echo "Version OS : $version"

Conditions (if/else)

#!/bin/bash

fichier="config.yaml"

if [ -f "$fichier" ]
then
    echo "Le fichier $fichier existe"
else
    echo "Le fichier $fichier n'existe pas"
fi

Opérateurs de test de fichiers

OpérateurDescription
-f fichierLe fichier existe et est un fichier régulier
-d dossierLe dossier existe
-r fichierLe fichier est lisible
-w fichierLe fichier est modifiable
-x fichierLe fichier est exécutable
-s fichierLe fichier existe et n'est pas vide

Opérateurs relationnels (nombres)

OpérateurSignification
-eqÉgal à
-neDifférent de
-gtSupérieur à
-ltInférieur à
-geSupérieur ou égal
-leInférieur ou égal

Opérateurs de chaîne

OpérateurSignification
=Égal
!=Différent
-zChaîne vide
-nChaîne non vide
#!/bin/bash

count=5

if [ $count -gt 3 ]
then
    echo "Count est supérieur à 3"
elif [ $count -eq 3 ]
then
    echo "Count est égal à 3"
else
    echo "Count est inférieur à 3"
fi

Passages d'arguments

#!/bin/bash

echo "Premier argument  : $1"
echo "Deuxième argument : $2"
echo "Tous les arguments : $*"
echo "Nombre d'arguments : $#"
# Appel :
./script.sh alice devops

# Sortie :
# Premier argument  : alice
# Deuxième argument : devops
# Tous les arguments : alice devops
# Nombre d'arguments : 2

Boucles

Boucle for

#!/bin/bash

# Itérer sur une liste
for serveur in web1 web2 web3
do
    echo "Configuration de $serveur..."
    ssh $serveur "sudo apt update"
done

# Itérer sur des fichiers
for fichier in /var/log/*.log
do
    echo "Traitement : $fichier"
done

Boucle while

#!/bin/bash

# Attendre qu'un service soit disponible
compteur=1
while [ $compteur -le 10 ]
do
    echo "Tentative $compteur..."
    if curl -s http://mon-service/health | grep "OK"
    then
        echo "Service disponible !"
        break
    fi
    compteur=$((compteur + 1))
    sleep 5
done

Fonctions

#!/bin/bash

# Déclarer une fonction
creer_utilisateur() {
    local username=$1          # Variable locale à la fonction
    local groupe=$2

    echo "Création de l'utilisateur $username dans $groupe..."
    sudo adduser $username
    sudo usermod -aG $groupe $username
    echo "Utilisateur $username créé avec succès"
}

# Appeler la fonction
creer_utilisateur "alice" "devops"
creer_utilisateur "bob" "admin"

Bonnes pratiques pour les fonctions

  • Une fonction = une responsabilité (Single Responsibility Principle)
  • Utiliser local pour les variables internes à la fonction
  • Ne pas trop de paramètres (difficile à lire)
  • Nommer clairement la fonction pour qu'elle soit auto-documentée

Exemple complet — Script de configuration serveur

#!/bin/bash

# Variables
NOM_UTILISATEUR=$1
NOM_GROUPE=$2
PROJET_DIR="/opt/projet"

# Vérifier les arguments
if [ $# -lt 2 ]
then
    echo "Usage: ./setup.sh <username> <groupname>"
    exit 1
fi

echo "=== Configuration du serveur ==="

# Créer le groupe
echo "Création du groupe $NOM_GROUPE..."
sudo groupadd $NOM_GROUPE

# Créer l'utilisateur
echo "Création de l'utilisateur $NOM_UTILISATEUR..."
sudo adduser $NOM_UTILISATEUR
sudo usermod -aG $NOM_GROUPE $NOM_UTILISATEUR

# Créer le dossier projet
echo "Création du dossier $PROJET_DIR..."
sudo mkdir -p $PROJET_DIR
sudo chown $NOM_UTILISATEUR:$NOM_GROUPE $PROJET_DIR
sudo chmod 770 $PROJET_DIR

# Installer Docker
echo "Installation de Docker..."
sudo apt update
sudo apt install -y docker.io
sudo usermod -aG docker $NOM_UTILISATEUR

echo "=== Configuration terminée ==="
echo "Utilisateur : $NOM_UTILISATEUR"
echo "Groupe : $NOM_GROUPE"
echo "Dossier : $PROJET_DIR"
# Utilisation :
chmod +x setup.sh
./setup.sh alice devops

À retenir

  • Script = fichier .sh avec des commandes Linux automatisées
  • Shebang #!/bin/bash = première ligne obligatoire indiquant le shell
  • chmod +x script.sh = rendre exécutable avant la première exécution
  • Variables : nom="valeur" (sans espaces) ; utiliser avec $nom
  • $1, $2, $#, $* = paramètres positionnels et métadonnées
  • [ condition ] = test (équivalent à la commande test)
  • if/then/else/fi = structure conditionnelle
  • for var in liste = boucle sur une liste
  • while condition = boucle tant que la condition est vraie
  • Fonctions = blocs réutilisables avec leurs propres variables locales
Précédent
Permissions & Propriété des Fichiers
Suivant
Variables d'Environnement Linux
Sur cette page
PrécédentSuivant