GNU/Linux >> Linux Esercitazione >  >> Panels >> Webmin

Variabili di "nidificazione" in bash

Mille grazie a "Gavin Smith" su stackoverflow.com per la prima parte di questo suggerimento.

Espressioni come ${${a}} non funzionano. Per aggirare il problema, puoi utilizzare eval:

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

L'output è

value

Grazie per il suggerimento Gavin!

Ok, allora perché dovresti volerlo?

Per me, dovevo verificare che alcune variabili fossero impostate da un file di configurazione incluso. Usando un ciclo e la tecnica di annidamento mostrata sopra possiamo prendere:

Questo:

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

E sostituiscilo con il più 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. Spazi per le variabili nello script Bash?

  2. Funzioni nelle variabili Shell?

  3. Utilizzo delle istruzioni Case in Bash

  4. Leggi riga per riga nello script bash

  5. Imposta un ambiente temporaneo ($PATH)

Come impostare le variabili d'ambiente in Linux

Come impostare la variabile d'ambiente in Windows

Come impostare le variabili d'ambiente in MacOS

Come impostare la variabile d'ambiente in Bash

Invio di sequenze di tasti simulate in Bash

In che modo bash verifica "false"?