我有以下配置文件:
export PROFILE_ACTIVE=0
export PROFILE_SCSADP01[0]="0 84"
export PROFILE_SCSADP04[0]="85 170"
export PROFILE_SCSADP05[0]="171 255"
export PROFILE_SCSADP01[1]="-1 -1"
export PROFILE_SCSADP04[1]="85 170|0 42"
export PROFILE_SCSADP05[1]="171 255|43 84"
我想在ksh脚本中使用替换来访问这些变量:
我可以使用以下语法轻松访问每个变量:
结果= $ {的 PROFILE_SCSADP01 [$ {PROFILE_ACTIVE}]}
但是我需要粗体部分是可变的,而不是固定的。
我已经厌倦了这种语法:
Temp="PROFILE_SCSADP01"
result=${$Temp[${PROFILE_ACTIVE}]}
然而,我总是得到一个糟糕的替代错误。 我试图寻找解决方法,但找不到任何工作,
答案 0 :(得分:1)
ksh
有typeset -n
命令(see here),我认为这是首选解决方案:
typeset -n tmp="PROFILE_SCSADP01"
result=${tmp[${PROFILE_ACTIVE}]}
您也可以使用eval
(be careful):
tmp="PROFILE_SCSADP01"
result=$(eval echo \${$tmp[${PROFILE_ACTIVE}]})
eval
在命令运行之前解析该命令,因此在eval
完成后,生成的命令如下所示:
result=$(echo ${PROFILE_SCSADP01[0]})