在unix中使用echo打印两个没有空格的变量

时间:2013-06-10 09:54:16

标签: bash unix echo

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

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

for loop我正在尝试echo $VAR$i

预期的O / P:

ABC
XYZ
PQR

实际输出:

1
2
3

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

echo "${VAR1}${VAR2}${VAR3}"

这很简单。我不认为创建无用的循环只是为了将几个值连接成一个字符串

答案 3 :(得分:-1)

而不是      

echo $VAR$i
在for循环中执行

varx=$varx$var$i

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

echo $varx

这是针对没有空间的打印问题所示。