GNU/Linux >> Belajar Linux >  >> Panels >> Webmin

Variabel "Bersarang" di bash

Terima kasih banyak kepada “Gavin Smith” di stackoverflow.com untuk bagian pertama dari tip ini.

Ekspresi seperti ${${a}} tidak berfungsi. Untuk mengatasinya, Anda dapat menggunakan eval:

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

Keluarannya adalah

value

Terima kasih atas tipnya, Gavin!

Oke, jadi kenapa kamu mau?

Bagi saya, saya perlu menguji bahwa variabel tertentu sedang disetel dari file konfigurasi yang disertakan. Menggunakan loop dan teknik bersarang yang ditunjukkan di atas, kita dapat mengambil:

Ini:

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

Dan ganti dengan yang lebih elegan:

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. Ekspansi &Variabel Bash Brace?

  2. Spasi Untuk Variabel Dalam Skrip Bash?

  3. Menggunakan Pernyataan Kasus di Bash

  1. Bash/sh pernyataan 'jika lain'

  2. Periksa apakah ada variabel dalam daftar di Bash

  3. Tetapkan lingkungan sementara ($PATH)

  1. Apa gunanya $# di Bash

  2. Apa yang dilakukan `set -x`?

  3. Bagaimana bash menguji 'false'?