Tengo un proyecto con un archivo bash común para variables. ¿Hay alguna forma de que los scripts los cambien?
Un script de acción de muestra:
$ cat sampleaction.sh
#!/bin/bash
# Source variables
. commonlibrary
# Do action according to mode
case $MODE in
idle)
#do nothing
active)
#do something
$MODE
existe en un archivo común y solo se verifica al iniciar cada script de acción individual. Me gustaría que el script de configuración de bash establezca esta variable si contiene una bandera, por ejemplo. --active
.
El script de configuración:
cat initaction.sh
#!/bin/bash
# Source variables
. commonlibrary
# Check flags
while [ $# -gt 0 ]
do
case $1 in
--active)
shift;
MODE=active;;
esac
done
Respuesta1
Puede cambiar la variable en el archivo común simplemente haciendo eco de los nuevos valores en ese archivo:
echo "MODE=active" > commonlibrary
Un ejemplo con tu código:
#!/bin/bash
. commonlibrary
case $MODE in
idle)
#do nothing
active)
echo "MODE=newmode" > commonlibrary
Ahora bien, si tuvieras más de una variable en ese archivo, esto plantearía un problema. Primero deberá obtener cada variable y luego crear todos los valores nuevos y agregarlos al archivo. Hay muchas maneras de hacerlo, puedes investigar sobre ello o pensar en tu propia manera.