GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Webmin

„Verschachteln“ von Variablen in bash

Vielen Dank an „Gavin Smith“ auf stackoverflow.com für den ersten Teil dieses Tipps.

Ausdrücke wie ${${a}} funktionieren nicht. Um dies zu umgehen, können Sie eval:

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

Ausgabe ist

value

Danke für den Tipp Gavin!

Okay, warum sollten Sie das tun?

Für mich musste ich testen, ob bestimmte Variablen aus einer enthaltenen Konfigurationsdatei festgelegt wurden. Unter Verwendung einer Schleife und der oben gezeigten Verschachtelungstechnik können wir nehmen:

Dies:

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

Und ersetzen Sie es durch das elegantere:

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. Wie man einen Knall wiederholt!?

  2. Leerzeichen für Variablen in Bash-Skript?

  3. Funktionen in Shell-Variablen?

  4. Verwenden von Case-Anweisungen in Bash

  5. Bash/sh 'if else'-Anweisung

So setzen Sie Umgebungsvariablen in Linux

So legen Sie die Umgebungsvariable in Windows fest

So legen Sie Umgebungsvariablen in MacOS fest

Festlegen von Shell-Umgebungsvariablen | BASH-Shell

So setzen Sie die Umgebungsvariable in Bash

Was macht "set -x"?