En algunas ocasiones tal vez necesites crear un script de Bash para resolver algunas tareas y que utilice un fichero de configuración. ¿Cómo lo plantearías? ¿Cómo implementarías el fichero de configuración?
Lo primero que pensé fue en utilizar el comando cut de forma que el fichero de configuración tuviera un formato de etiqueta=valor, y podría “cortar” para leer la etiqueta y el valor. Pero es mala cosa, porque por cada línea del fichero de configuración tienes que cortar y luego saber qué etiqueta es. La mejor solución, el comando source
Suponemos un fichero de configuración config.ini como este:
PATTERN="$hello*" FILENAME=hello.txt OUTPUT=result.txt
Y queremos que nuestro script lea estas variables y ejecute grep
#!/bin/bash source config.ini grep ${PATTERN} ${FILENAME} > ${OUTPUT}
El comando source importara todas las variables del fichero de configuración config.ini en nuestro script y prodremos utilizarlas para lanzar grep. También podemos sustituir el comando source por un . (un punto) así:
. config.ini
También podemos importar otros script con sentencias de control (if-else) pero hay que tener cuidado porque si el script que importamos contiene el comando exit el programa finalizará en ese punto. Por ejemplo, importamos el siguente trozo de código:
config.sh
#!/bin/bash HELLO=world exit
Y lo utilizamos en este:
parent.sh
#!/bin/bash source config.sh echo ${HELLO}
Cuando lanzamos el script ./parent.sh terminará antes de llegar a la línea de echo porque ha leído el exit
Espero que este pequeño truco os de una idea de como utilizar el comando source para importar fichero de configuración dentro de vuestros scripts
Es una traducción de este truco en linux.byexamples.com
Pingback: nordri's Blog » No se carga .bashrc al iniciar sesión por SSH