Creando un Administrador de Configuración Práctico
Ahora que comprende cómo crear y manipular arreglos clave-valor, construyamos algo práctico. En este paso, creará un administrador de configuración simple que carga la configuración de un archivo de configuración, la almacena en un arreglo clave-valor y le permite acceder a ella.
Paso 1: Crear un Archivo de Configuración
Primero, creemos un archivo de configuración con algunas configuraciones de ejemplo:
- Cree un nuevo archivo llamado
app_config.txt en el directorio /home/labex/project
- Agregue el siguiente contenido al archivo:
database_host=localhost
database_port=3306
database_user=admin
database_password=secret123
app_name=MyAwesomeApp
debug_mode=true
max_connections=100
- Guarde el archivo
Paso 2: Crear el Script del Administrador de Configuración
Ahora, creemos un script que leerá este archivo de configuración y almacenará su contenido en un arreglo clave-valor:
- Cree un nuevo archivo llamado
config_manager.sh en el directorio /home/labex/project
- Agregue el siguiente código al archivo:
#!/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)"
- Guarde el archivo (Ctrl+S o File > Save)
- Haga que el script sea ejecutable:
chmod +x config_manager.sh
- Ejecute el script:
./config_manager.sh
Debería ver una salida similar a esta:
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)
Entendiendo el Administrador de Configuración
El script que ha creado hace varias cosas importantes:
- Lee pares clave-valor de un archivo de configuración
- Almacena estos pares en un arreglo clave-valor
- Proporciona funciones para:
- Cargar la configuración de un archivo
- Obtener valores de configuración específicos con valores predeterminados de respaldo
- Mostrar todas las configuraciones
Este patrón se usa comúnmente en aplicaciones del mundo real para administrar la configuración. Los beneficios clave son:
- Configuración centralizada: Todas las configuraciones están en un solo lugar
- Valores predeterminados: Si falta una configuración, se puede usar un valor predeterminado
- Fácil acceso: Se puede acceder a la configuración por nombre
- Flexibilidad: La configuración se puede actualizar sin cambiar el script
Este ejemplo demuestra cómo se pueden usar los arreglos clave-valor para resolver problemas prácticos en el scripting de shell. Podría extender esto agregando funciones para guardar los cambios de nuevo en el archivo de configuración o para validar la configuración.