我想在 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 命令无法读取我的变量值?非常感谢您的帮助。
一种使用 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