这个 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"