GNU/Linux >> Linux の 問題 >  >> Panels >> Webmin

bash で変数を「入れ子にする」

このヒントの最初の部分については、stackoverflow.com の「Gavin Smith」に感謝します。

<ブロック引用>

${${a}} のような式は機能しません。これを回避するには、eval を使用できます:

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

出力は

value

Gavin さん、アドバイスありがとうございます!

それで、なぜそうしたいのですか?

私にとっては、含まれている構成ファイルから特定の変数が設定されていることをテストする必要がありました。上記のループとネスト手法を使用すると、次のことができます。

これ:

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

よりエレガントなものに置き換えてください:

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. バンをエコーする方法!?

  2. Bashブレースの拡張と変数?

  3. Bashでのケースステートメントの使用

  1. Bash/sh 'if else' ステートメント

  2. Bash のリストに変数が存在するかどうかを確認する

  3. Ansible で Linux 環境変数を設定する方法

  1. 一時的な環境を設定する ($PATH)

  2. Bashでの$#の使用は何ですか

  3. set -x は何をしますか?