
Tengo varios scripts bash individuales. Hacen cosas diferentes y son grandes (entre 70 y 100 líneas cada uno). Por eso los he guardado en archivos separados. Pero todos ellos están relacionados con un problema central y, por tanto, comparten varios valores constantes en común.
Entonces, para simplificar, tengo diez variables constantes, algunas son cadenas, otras son números, mientras que dos son matrices, todas las cuales deben estar disponibles en diez scripts bash diferentes. ¿Cómo logro esto?
Tenga en cuenta que si bien existe una central main.sh
que puede llamar a estos scripts bash individuales, este no siempre será el caso. También se pueden llamar directamente desde la línea de comando ( ./script1.sh
). Incluso en ese caso, las variables deberían estar disponibles para los scripts.
La única forma que se me ocurrió fue codificar en dev/script1.temp.sh
archivos, y cada vez que necesito ejecutar cualquier archivo, ejecuto un build.sh
script bash que simplemente reemplaza (a través de grep
) todas las apariciones de una constante particular ( $CONSTANT
) en todo el archivo para producir build/script1.sh
.
Respuesta1
Ponga todas las constantes en un archivo, constants.env
por ejemplo. Y en todos los scripts que usen cualquiera de esas constantes, ponlos . constants.env
a cargar.
Por ejemplo, constants.env
:
HELLO=world
script.sh
#!/bin/bash
. constants.env
echo $HELLO
Ejecutando el ejemplo:
$ ./script.sh
world