要读取变量的值,你可以使用间接:${!var}
:
#! /bin/bash
j=1
val=get_5
var=SAMPLE${j}_CHIP
declare "$var"="$val"
echo "${!var}"
的问题是把这些变量中获得的价值。
我用上面的声明,和已知的选项有:
declare "$var"="$val"
printf -v "$var" '%s' "$val"
eval $var'=$val'
export "$var=$val"
最危险的方法是使用eval。如果var
或val
的内容可能由外部用户设置,则已设置获取代码注入的方法。它今天看起来很安全,但是由于某种原因某人编辑了代码之后,它可能会发生变化,给攻击者一个“进入”的机会。
也许最好的解决方案是避免以上所有。
关联数组
一种替代方法是使用关联数组:
#! /bin/bash
j=1
val=get_5
var=SAMPLE${j}_CHIP
declare -A array
array[$var]=$val
echo "${array[$var]}"
相当低风险的,你会得到一个类似命名的指数。
平原阵列
但很显然,最安全的办法是用最简单的解决方案:
#! /bin/bash
j=1
val=get_5
array[j]=$val
echo "${array[j]}"
全部完成,风险不大。
您打算在'bash'中使用变量上下文还是数组上下文吗? – Inian