GNU/Linux >> Tutoriales Linux >  >> Panels >> Webmin

Variables “anidadas” en bash

Muchas gracias a "Gavin Smith" en stackoverflow.com por la primera parte de este consejo.

Expresiones como ${${a}} no funcionan. Para evitarlo, puede usar eval:

b=value
a=b
eval aval=\$$a
echo $aval

La salida es

value

¡Gracias por el consejo Gavin!

Vale, entonces, ¿por qué querrías hacerlo?

Para mí, necesitaba probar que ciertas variables se estaban configurando desde un archivo de configuración incluido. Usando un bucle y la técnica de anidamiento que se muestra arriba, podemos tomar:

esto:

if [ "${KIDFILE}" == "" ] ; then
  echo "ERROR - KIDFILE Not Set"
  exit 1
fi

if [ "${KUSER}" == "" ] ; then
  echo "ERROR - KUSER Not Set"
  exit 1
fi

if [ "${KSERVER}" == "" ] ; then
  echo "ERROR - KSERVER Not Set"
  exit 1
fi

if [ "${KRFILE}" == "" ] ; then
  echo "ERROR - KRFILE Not Set"
  exit 1
fi

if [ "${KLFILE}" == "" ] ; then
  echo "ERROR - KLFILE Not Set"
  exit 1
fi

if [ "${KLINK}" == "" ] ; then
  echo "ERROR - KLINK Not Set"
  exit 1
fi

Y reemplázalo por el más elegante:

NEEDVARS="KIDFILE KUSER KSERVER KRFILE KLFILE KLINK"
for MYVAR in ${NEEDVARS}; do
  eval MYVAL=\$${MYVAR}
  if [ "${MYVAL}" = "" ] ; then
    echo "${MYVAR} NOT SET"
    exit 1
  fi
done

Webmin
  1. Configuración de variables de entorno de Shell | Cáscara BASH

  2. ¿Cómo hacer eco de una explosión?

  3. ¿Espacios para variables en Bash Script?

  4. Uso de declaraciones de casos en Bash

  5. Leer línea por línea en bash script

Cómo establecer variables de entorno en Linux

Cómo establecer la variable de entorno en Windows

Cómo establecer variables de entorno en MacOS

Cómo establecer la variable de entorno en Bash

Envío de pulsaciones de teclas simuladas en Bash

¿Cómo prueba bash 'falso'?