使用“动态创建”变量(名称)操作时出现问题

BZ="b01 b02 b03"
[user:~]$ for i in $BZ; do echo $i ; declare status_$i=foobar_"$i" ; echo wrong:  $status_$i;done

输出:
b01
wrong: b01
b02
wrong: b02
b03
wrong: b03

[user:~]$ echo $status_b01    $status_b02

输出正常:
foobar_b01 foobar_b02

变量存在。内容还可以。如何在不使用explicite名称$status_b03的情况下获取值?我喜欢使用$status\I(变量的动态创建名称)。
最好的
马克

最佳答案

必须使用具有要取消引用的变量名的变量:

BZ="b01 b02 b03"
for i in $BZ
do
    echo "$i"
    declare status_$i=foobar_"$i"
    vname=status_$i
    echo "${!vname}"
done

输出:
b01
foobar_b01
b02
foobar_b02
b03
foobar_b03

关于linux - bash:如何在for循环中访问“动态声明的变量”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52162227/

10-11 18:14