【发布时间】:2015-02-14 13:46:39
【问题描述】:
我有以下配置文件:
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}]}
但是我总是得到一个糟糕的替换错误。 我试图寻找解决方法,但找不到任何可行的方法,
【问题讨论】:
-
或者,您可以将 [ 和 ] 内的数字设为唯一变量。例如,
PROFILE_SCSADP01[0]可以变为PROFILE_SCSADP[10],PROFILE_SCSADP01[1]可以变为PROFILE_SCSADP[11]。这样,您就无需在 [ 和 ] 内以及作为变量名本身的一部分使用变量。您可以使用 101,或 1001,或任何需要的。 -
或者创建一个函数,该函数将使用诸如
SET1_PROFILE_SCSADP01="0 84"(SET1/SET2 激活)之类的行进行 grep 和剪切配置文件。
标签: shell unix ksh aix substitution