Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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
Linux 如何在Shell中展开变量中的变量_Linux_Bash_Shell - Fatal编程技术网

Linux 如何在Shell中展开变量中的变量

Linux 如何在Shell中展开变量中的变量,linux,bash,shell,Linux,Bash,Shell,我遇到一个问题,需要在另一个变量中展开一个变量,如下所示: var1=abc var2=$var1/pqr echo ${!var2} 这里我希望输出是abc/pqr,但没有得到它,请帮助。 var2值只是这样,我不能用双引号括起来。在这种情况下,您不需要取消引用: $ var1=abc $ var2=$var1/pqr $ echo $var2 abc/pqr 将变量指定为不带$符号的值时,可以取消引用。例如: $ var1=abc/pqr $ var2=var1 $ echo ${!va

我遇到一个问题,需要在另一个变量中展开一个变量,如下所示:

var1=abc
var2=$var1/pqr
echo ${!var2}
这里我希望输出是abc/pqr,但没有得到它,请帮助。
var2值只是这样,我不能用双引号括起来。

在这种情况下,您不需要取消引用:

$ var1=abc
$ var2=$var1/pqr
$ echo $var2
abc/pqr
将变量指定为不带
$
符号的值时,可以取消引用。例如:

$ var1=abc/pqr
$ var2=var1
$ echo ${!var2}
abc/pqr

只需删除

var1=abc
var2=$var1/pqr
echo ${var2}

请注意,上面的花括号不是必需的,但它们也没有坏处。

这里我得到的输出如下:echo$var2:o/p$var1/pqrI我没有使用任何类型的引号。
eval
这里肯定没有指出。即使在这样小的例子中,教人们正确使用引号也是一个好主意。
>> a="abcd"
>> b='$a/xyz'
>> eval c="$b"

>> echo $b
   $a/xyz
>> echo $c
   abcd/xyz