Mes: agosto 2011

Fichero de configuración simple

Cuando creamos un script a veces queremos que éste pueda cargar su configuración desde un fichero, de manera que al volver a iniciar no necesite la intervención del usuario. Esto se puede conseguir con el comando declare y un bucle while.

En el siguiente ejemplo la información será cargada desde un fichero de texto, que contiene el nombre de la variable y su valor, el fichero contiene el nombre de las variables sin espacios alrededor del signo de asignación que es como bash reconoce las variables correctamente.

Cargando la configuración

Contenido del fichero:


start=0
warn_sig=1
debug=no
sound=no

Para cargar las variables de éste fichero en nuestro script sería suficiente con unas pocas líneas:


while read variables
do
declare "$variables"
done < fichero_de_configuración.cfg

La ventaja de utilizar éste método para cargar la configuración del script es que es muy simple y no complica el código, pero tiene como desventaja que si el usuario toca manualmente el fichero de configuración y deja algún espació alrededor del signo de asignación ( = ) se produce un error en el script y adiós al invento :S.

Prevenir los espacios en blanco

Para evitar los problemas que pueden causar los espacio en blanco alrededor del signo de asignación podemos utilizar los comandos cut y sed. Para separar los campos utilizaremos cut, y para borrar los espacios en blanco el comando sed.

Utilizando el código anterior más unas pequeñas modificaciones podemos prevenir los espacios en blanco:


while read variables
do
nom=$(echo "$variables" | cut -d\= -f1 | sed "s/ //g")
valor=$(echo "$variables" | cut -d\= -f2)
declare "${nom}=${valor}"
done < fichero_de_configuración.cfg

En la variable nom cortamos el primer campo con el separador con el signo de asignación y borramos los espacios en blanco, el primer campo debe ser el nombre con el que la variable será cargada (mirar el contenido del fichero de ejemplo), y el segundo campo será el valor de la misma.

La variable valor se limita a seleccionar el segundo campo y a no borrar los espacios en blanco para no dañar el valor de la variable si es una cadena.

Seguramente existan centenares de maneras distintas de cargar la configuración de un script desde un fichero de texto plano, pero siempre hay que intentar seguir el principio KISS.

Keep It Short and Simple

Anuncios