Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在unix中使用echo打印两个没有空格的变量_Bash_Unix_Echo - Fatal编程技术网

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

Bash 在unix中使用echo打印两个没有空格的变量,bash,unix,echo,Bash,Unix,Echo,我想在for循环中打印VAR1、VAR2和VAR3的值。 请帮忙 在for循环中我正在尝试执行echo$VAR$i 预期O/p: VAR1=ABC; VAR2=XYZ; VAR3=PQR; 实际产量: ABC XYZ PQR 您可以这样做: 1 2 3 关键点是eval命令 试验 而不是 $ VAR1=ABC; VAR2=XYZ; VAR3=PQR; $ for i in 1 2 3; do eval "echo \$VAR${i}"; done ABC XYZ PQR echo$VAR

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

for循环中
我正在尝试执行
echo$VAR$i

预期O/p:

VAR1=ABC;
VAR2=XYZ;
VAR3=PQR;
实际产量:

ABC
XYZ
PQR

您可以这样做:

1
2
3
关键点是
eval
命令

试验 而不是
$ VAR1=ABC; VAR2=XYZ; VAR3=PQR;
$ for i in 1 2 3; do eval "echo \$VAR${i}"; done
ABC
XYZ
PQR
echo$VAR$i 在循环中做什么

echo $VAR$i varx=$varx$var$i 并将varx初始化为空字符串,并在末尾do

varx=$varx$var$i echo$varx 如问题所示,这适用于无空格打印。

使用数组:

echo $varx 或者,使用间接变量:

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

就这么简单。我认为仅仅为了间接变量将几个值连接成一个字符串而创建无用的循环是没有意义的。我不知道这样做是可能的。这并没有扩展到三个变量的值。虽然这种方法对于vanilla
sh
是必要的,
bash
提供了不需要使用可能危险的
eval
命令的替代方法(请参阅)。
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
echo "${VAR1}${VAR2}${VAR3}"