この 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の場合(少なくとも)いくつかのオプションがあります。
連想配列
envir=Dev foo["$envir"]=bar echo "${foo["$envir"]}"
名前参照
nameref var=${envir}foo var=bar echo "$var"
ksh88を使用すると、evalに問題が発生する可能性があります。
envir=Dev
name="${envir}foo"
eval "$name=bar"
eval "echo \$$name"