shell 正在为循环访问BASH中的变量值[重复]

vuv7lop3  于 2023-02-24  发布在  Shell
关注(0)|答案(1)|浏览(106)
    • 此问题在此处已有答案**:

(19个答案)
3天前关闭。
我想在BASH的for循环中赋值并打印变量值。
我的代码如下所示:

tea=(A B C D E F G)
c=0
for (( i=1; i<${#tea[@]}; i++ ));
do
    eval "var$c=${tea[$i]}";
    c=$((c+1));
    echo "$var$c" >> example.txt
done

我在txt文件中得到的输出是:1 2 3 4 5 6.我期望的输出是B C D E F G。我不明白为什么我会得到这个输出,是我没有正确地给var $c赋值还是这个echo命令无法读取我的变量值?我将非常感谢您的帮助。

jslywgbw

jslywgbw1#

使用nameref的一种方法是:

tea=(A B C D E F G)

c=0

for (( i=1; i<${#tea[@]}; i++ ));
do
    declare -n varC="var$c"                  # nameref
    varC="${tea[$i]}"
    c=$((c+1))
    echo "$varC" >> example.txt
done

这将产生:

$ cat example.txt
B
C
D
E
F
G

相关问题