Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🐧
Intermediaire 25 min Bash

Bash scripting : guide pratique

Bash Scripting : Guide Pratique

Pourquoi Bash scripting : guide pratique ?

Dans un environnement professionnel, le scriptage en Bash est une compétence précieuse. Il permet d'automatiser des tâches répétitives, de gérer les systèmes d'exploitation et de développer des outils utilitaires. Un cas concret pourrait être la création d'un script qui sauvegarde automatiquement les fichiers importantes sur un serveur.

Prerequis

  • Connaissance de base en programmation (variables, conditions, boucles)
  • Installation de Bash (généralement pré-installé sur Linux et macOS)

Concepts fondamentaux

Variables et Types de Données

Les variables en Bash sont utilisées pour stocker des valeurs qui peuvent être manipulées par des commandes. Elles sont déclarées en utilisant le signe =.

## Déclaration d'une variable
nom="John"
âge=30

## Utilisation de la variable dans un message
echo "Mon nom est $nom et j'ai $âge ans."

Conditions

Les conditions permettent d'exécuter des commandes conditionnelles en fonction de certaines conditions.

## Exemple de condition if-else
if [ "$âge" -gt 18 ]; then
    echo "Je suis majeur."
else
    echo "Je suis mineur."
fi

Boucles

Les boucles sont utilisées pour répéter un ensemble d'instructions.

## Exemple de boucle for
for i in 1 2 3 4 5; do
    echo $i
done

## Exemple de boucle while
count=0
while [ $count -lt 5 ]; do
    echo "Le compteur est à $count"
    count=$((count+1))
done

Fonctions

Les fonctions permettent de regrouper des commandes pour les réutiliser plus tard.

## Déclaration et appel d'une fonction
function saluer {
    nom=$1
    echo "Bonjour, $nom !"
}

saluer "Alice"

Mise en pratique : projet fil rouge

Mini-Projet : Un Gestionnaire de Tâches

Ce script permettra de créer, lire, mettre à jour et supprimer des tâches.

#!/bin/bash

## Déclaration d'un tableau pour stocker les tâches
taches=()

## Fonction pour ajouter une tâche
ajouter_tache() {
    echo "Ajoutez une nouvelle tâche :"
    read nouvelle_tache
    taches+=("$nouvelle_tache")
}

## Fonction pour afficher toutes les tâches
afficher_taches() {
    echo "Liste des tâches :"
    for i in "${!taches[@]}"; do
        echo "$i: ${taches[$i]}"
    done
}

## Fonction pour mettre à jour une tâche
mettre_a_jour_tache() {
    afficher_taches
    echo "Entrez l'index de la tâche à modifier :"
    read index
    if [[ $index =~ ^[0-9]+$ ]] && [ $index -lt ${#taches[@]} ]; then
        echo "Nouvelle tâche :"
        read nouvelle_tache
        taches[$index]="$nouvelle_tache"
    else
        echo "Index invalide."
    fi
}

## Fonction pour supprimer une tâche
supprimer_tache() {
    afficher_taches
    echo "Entrez l'index de la tâche à supprimer :"
    read index
    if [[ $index =~ ^[0-9]+$ ]] && [ $index -lt ${#taches[@]} ]; then
        unset taches[$index]
        # Réorganiser les indices
        taches=("${taches[@]}")
    else
        echo "Index invalide."
    fi
}

## Menu principal
while true; do
    echo "1. Ajouter une tâche"
    echo "2. Afficher toutes les tâches"
    echo "3. Mettre à jour une tâche"
    echo "4. Supprimer une tâche"
    echo "5. Quitter"
    read choix

    case $choix in
        1) ajouter_tache ;;
        2) afficher_taches ;;
        3) mettre_a_jour_tache ;;
        4) supprimer_tache ;;
        5) break ;;
        *) echo "Choix invalide." ;;
    esac
done

Étapes du Projet

  1. Initialisation des variables et tableau :
taches=()
  1. Fonction pour ajouter une tâche :
function ajouter_tache {
    echo "Ajoutez une nouvelle tâche :"
    read nouvelle_tache
    taches+=("$nouvelle_tache")
}
  1. Fonction pour afficher toutes les tâches :
function afficher_taches {
    echo "Liste des tâches :"
    for i in "${!taches[@]}"; do
        echo "$i: ${taches[$i]}"
    done
}
  1. Fonction pour mettre à jour une tâche :
function mettre_a_jour_tache {
    afficher_taches
    echo "Entrez l'index de la tâche à modifier :"
    read index
    if [[ $index =~ ^[0-9]+$ ]] && [ $index -lt ${#taches[@]} ]; then
        echo "Nouvelle tâche :"
        read nouvelle_tache
        taches[$index]="$nouvelle_tache"
    else
        echo "Index invalide."
    fi
}
  1. Fonction pour supprimer une tâche :
function supprimer_tache {
    afficher_taches
    echo "Entrez l'index de la tâche à supprimer :"
    read index
    if [[ $index =~ ^[0-9]+$ ]] && [ $index -lt ${#taches[@]} ]; then
        unset taches[$index]
        taches=("${taches[@]}")
    else
        echo "Index invalide."
    fi
}
  1. Menu principal :
while true; do
    echo "1. Ajouter une tâche"
    echo "2. Afficher toutes les tâches"
    echo "3. Mettre à jour une tâche"
    echo "4. Supprimer une tâche"
    echo "5. Quitter"
    read choix

    case $choix in
        1) ajouter_tache ;;
        2) afficher_taches ;;
        3) mettre_a_jour_tache ;;
        4) supprimer_tache ;;
        5) break ;;
        *) echo "Choix invalide." ;;
    esac
done

Erreurs frequentes et debugging

1. Erreur : Commande inconnue

Message d'erreur :

command not found: echo

Code incorrect :

echo = "Hello, World!"

Code correct :

echo "Hello, World!"

2. Erreur : Variable non définie

Message d'erreur :

bash: name: command not found

Code incorrect :

name="John"
echo $name

Code correct :

name="John"
echo "$name"

3. Erreur : Syntaxe Incorrecte des Conditions

Message d'erreur :

bash: [[: not found

Code incorrect :

if [ "a" = "b" ]; then
    echo "Equal"
fi

Code correct :

if [ "$a" == "$b" ]; then
    echo "Equal"
fi

Pour aller plus loin

1. Utiliser des fichiers de configuration

En utilisant des fichiers .conf, vous pouvez externaliser les paramètres et rendre votre script plus flexible.

2. Gérer les entrées d'utilisateur avec read

La commande read permet de lire l'entrée utilisateur, ce qui est utile pour créer des interfaces interactives.

3. Utiliser des fonctions pour organiser le code

Diviser le code en fonctions permet de le rendre plus modulaire et facilement maintenable.

Défi pratique

Créez un script qui permet de gérer une liste de contacts avec les options d'ajouter, de consulter et de supprimer des contacts. Utilisez des fichiers pour stocker les données et des fonctions pour chaque opération.


Ce tutoriel couvre les concepts fondamentaux du scripting Bash et guide le lecteur à travers la création d'un mini-projet complet. Il met en pratique les connaissances acquises et aide à comprendre comment automatiser des tâches grâce au scripting Bash.

Besoin d'aide sur Bash ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Quelle est la différence entre un script bash et une commande bash ?
Un script bash est un fichier qui contient plusieurs commandes bash à exécuter, tandis qu'une commande bash est une instruction unique que vous pouvez exécuter directement dans le terminal.
Comment puis-je tester si mon script bash fonctionne correctement ?
Vous pouvez tester votre script bash en l'exécutant dans le terminal. Assurez-vous d'avoir les permissions nécessaires pour exécuter le fichier et de vérifier la sortie pour s'assurer qu'elle est conforme à ce qui est attendu.
Comment puis-je ajouter des commentaires dans mon script bash ?
Vous pouvez ajouter des commentaires dans votre script bash en utilisant le caractère `#`. Tout ce qui suit un `#` sur la même ligne sera considéré comme un commentaire et ne sera pas exécuté.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.