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"

相关内容