2
VAR1=ABC;
VAR2=XYZ;
VAR3=PQR;

我想在 for 循环中打印 VAR1、VAR2 和 VAR3 的值。请帮忙!

for loop我想做的echo $VAR$i

预期的 O/P:

ABC
XYZ
PQR

实际输出:

1
2
3
4

4 回答 4

6

使用数组:

VAR[1]=ABC
VAR[2]=XYZ
VAR[3]=PQR
for i in 1 2 3 ; do
    echo ${VAR[i]}
done

或者,使用变量间接:

VAR1=ABC
VAR2=XYZ
VAR3=PQR
for i in 1 2 3 ; do
    name=VAR$i
    echo ${!name}
done
于 2013-06-10T10:02:08.150 回答
2

你可以这样做:

for i in 1 2 3
do
   eval "echo \$VAR${i}"
done

关键是eval命令。

测试

$ VAR1=ABC; VAR2=XYZ; VAR3=PQR;
$ for i in 1 2 3; do eval "echo \$VAR${i}"; done
ABC
XYZ
PQR
于 2013-06-10T10:00:51.443 回答
0
echo "${VAR1}${VAR2}${VAR3}"

就那么简单。我认为创建无用的循环只是为了将几个值连接成一个字符串是没有意义的

于 2017-06-19T19:40:58.780 回答
-1

代替

回声 $VAR$i
在 for 循环中做

varx=$varx$var$i

并将 varx 初始化为空字符串,最后执行

回声 $varx

正如问题所暗示的那样,这是用于没有空间的打印。

于 2013-06-10T10:01:20.087 回答