KornShellスクリプトの動的変数

KornShellスクリプトの動的変数

この KornShell スクリプト (ksh):

envir=Dev
eval "${envir}foo=bar"
echo "$Devfoo"

出力:

bar

envirただし、変数にどの値が割り当てられているかは不明です。だから、上記の出力で次のようなことをしたいと思います。

envir=Dev
eval "${envir}foo=bar"
echo "${${envir}foo}"

出力:

${${envir}foo}: bad substitution

答え1

ksh93の場合(少なくとも)いくつかのオプションがあります。

  1. 連想配列

    envir=Dev
    foo["$envir"]=bar
    echo "${foo["$envir"]}"
    
  2. 名前参照

    nameref var=${envir}foo
    var=bar
    echo "$var"
    

ksh88を使用すると、evalに問題が発生する可能性があります。

envir=Dev
name="${envir}foo"
eval "$name=bar"
eval "echo \$$name"

関連情報