Création d'un gestionnaire de configuration pratique
Maintenant que vous savez comment créer et manipuler des tableaux associatifs, construisons quelque chose de pratique. Dans cette étape, vous allez créer un gestionnaire de configuration simple qui charge les paramètres à partir d'un fichier de configuration, les stocke dans un tableau associatif et vous permet d'y accéder.
Étape 1 : Créer un fichier de configuration
Tout d'abord, créons un fichier de configuration avec quelques paramètres d'exemple :
- Créez un nouveau fichier appelé
app_config.txt
dans le répertoire /home/labex/project
.
- Ajoutez le contenu suivant au fichier :
database_host=localhost
database_port=3306
database_user=admin
database_password=secret123
app_name=MyAwesomeApp
debug_mode=true
max_connections=100
- Enregistrez le fichier
Étape 2 : Créer le script du gestionnaire de configuration
Maintenant, créons un script qui lira ce fichier de configuration et stockera son contenu dans un tableau associatif :
- Créez un nouveau fichier appelé
config_manager.sh
dans le répertoire /home/labex/project
.
- Ajoutez le code suivant au fichier :
#!/bin/bash
## Define the path to the configuration file
CONFIG_FILE="/home/labex/project/app_config.txt"
## Declare a key-value array for the configuration
declare -A config
## Function to load configuration from file
load_config() {
local file=$1
## Check if the file exists
if [[ ! -f "$file" ]]; then
echo "Error: Configuration file '$file' not found."
return 1
fi
## Read the file line by line
while IFS='=' read -r key value; do
## Skip empty lines and comments
if [[ -z "$key" || "$key" == \#* ]]; then
continue
fi
## Store the key-value pair in the array
config["$key"]="$value"
done < "$file"
echo "Configuration loaded successfully from '$file'"
return 0
}
## Function to get a configuration value
get_config() {
local key=$1
local default=$2
## Check if the key exists
if [[ -v config["$key"] ]]; then
echo "${config["$key"]}"
else
echo "$default"
fi
}
## Function to display all configuration
display_config() {
echo "--- Configuration Settings ---"
for key in "${!config[@]}"; do
echo "$key = ${config[$key]}"
done
}
## Load the configuration
load_config "$CONFIG_FILE"
## Display all configuration settings
display_config
## Example of getting specific configuration values
echo -e "\n--- Example Usage ---"
db_host=$(get_config "database_host" "127.0.0.1")
db_port=$(get_config "database_port" "5432")
db_user=$(get_config "database_user" "root")
db_pass=$(get_config "database_password" "")
app_name=$(get_config "app_name" "DefaultApp")
debug_mode=$(get_config "debug_mode" "false")
echo "Database connection: $db_user@$db_host:$db_port"
echo "Application name: $app_name"
echo "Debug mode: $debug_mode"
## Example of getting a non-existent value (will use default)
timeout=$(get_config "connection_timeout" "30")
echo "Connection timeout: $timeout (default value used)"
- Enregistrez le fichier (Ctrl+S ou File > Save).
- Rendez le script exécutable :
chmod +x config_manager.sh
- Exécutez le script :
./config_manager.sh
Vous devriez voir une sortie similaire à celle-ci :
Configuration loaded successfully from '/home/labex/project/app_config.txt'
--- Configuration Settings ---
database_host = localhost
database_port = 3306
database_user = admin
database_password = secret123
app_name = MyAwesomeApp
debug_mode = true
max_connections = 100
--- Example Usage ---
Database connection: admin@localhost:3306
Application name: MyAwesomeApp
Debug mode: true
Connection timeout: 30 (default value used)
Comprendre le gestionnaire de configuration
Le script que vous avez créé fait plusieurs choses importantes :
- Il lit les paires clé-valeur à partir d'un fichier de configuration.
- Il stocke ces paires dans un tableau associatif.
- Il fournit des fonctions pour :
- Charger la configuration à partir d'un fichier.
- Obtenir des valeurs de configuration spécifiques avec des valeurs par défaut de repli.
- Afficher tous les paramètres de configuration.
Ce modèle est couramment utilisé dans les applications du monde réel pour gérer les paramètres de configuration. Les principaux avantages sont :
- Configuration centralisée : Tous les paramètres sont au même endroit.
- Valeurs par défaut : Si un paramètre est manquant, une valeur par défaut peut être utilisée.
- Accès facile : Les paramètres peuvent être accessibles par leur nom.
- Flexibilité : La configuration peut être mise à jour sans modifier le script.
Cet exemple montre comment les tableaux associatifs peuvent être utilisés pour résoudre des problèmes pratiques en script shell. Vous pourriez l'étendre en ajoutant des fonctions pour enregistrer les modifications dans le fichier de configuration ou pour valider les paramètres.