• Créer et importer ses propres modules en Bash

      Créer un module

      monmodule.sh :

      #!/bin/bash
      
      function bonjour() {
         echo "Bonjour, $1!"
      }
      
      # Variables exportables
      export MODULE_VERSION="1.0"
      
      # Fonction privée (avec un préfixe _)
      _private_helper() {
         echo "Ceci est privé"
      }
      
      # Fonction principale du module
      module_main() {
         echo "Fonction principale du module"
      }

      Importer le module

      Méthode 1: Source directe (recommandée)

      #!/bin/bash
      
      # Importer le module
      source /chemin/vers/monmodule.sh
      
      bonjour "Pierre"
      echo "Version: $MODULE_VERSION"
      module_main

       

      Méthode 2: Utilisation de ‘source’ avec vérification

      #!/bin/bash
      
      MODULE_PATH="/chemin/vers/monmodule.sh"
      
      if [[ -f "$MODULE_PATH" ]]; then
         source "$MODULE_PATH"
      else
         echo "Erreur: Module non trouvé" >&2
         exit 1
      fi

       

      Méthode 3: Importation relative

      #!/bin/bash
      
      # Importe depuis le même répertoire que le script
      source "$(dirname "$0")/monmodule.sh"

      Bonnes pratiques pour les modules

      Namespace :

      function monmodule_greet() {
         echo "Bonjour depuis monmodule!"
      }

      Initialisation du module :

      function monmodule_init() {
         echo "Module initialisé"
         # Configuration initiale ici
      }

      Documentation intégrée :

      function monmodule_help() {
         cat <<EOF
      Usage:
         monmodule_greet [name]  - Dire bonjour
         monmodule_init          - Initialiser le module
      EOF
      }

      Exemple complet

      mathutils.sh (module) :

      #!/bin/bash
      
      function math_add() {
         echo $(($1 + $2))
      }
      
      function math_mult() {
         echo $(($1 * $2))
      }
      
      function math_show_functions() {
         declare -F | grep "math_"
      }

       

      main.sh (script principal) :

      #!/bin/bash
      
      source ./mathutils.sh
      
      res_add=$(math_add 5 3)
      res_mul=$(math_mult 5 3)
      
      echo "5 + 3 = $res_add"
      echo "5 * 3 = $res_mul"
      
      echo "Fonctions disponibles:"
      math_show_functions

      Gestion des erreurs

      Dans le module :

      function module_check_requirements() {
         local required_commands=("curl" "jq")
         for cmd in "${required_commands[@]}"; do
            if ! command -v "$cmd" &> /dev/null; then
               echo "Erreur: $cmd n'est pas installé" >&2
               return 1
            fi
         done
         return 0
      }

      Chargement dynamique

      Pour charger uniquement ce dont on a besoin :

      #!/bin/bash
      
      modules=("network" "files" "math")
      
      for module in "${modules[@]}"; do
         source "./modules/${module}.sh" || {
            echo "Échec du chargement de $module" >&2
            exit 1
         }
      done

       

 

Aucun commentaire

 

Laissez un commentaire