变量内的echo值?

时间:2010-06-09 15:37:31

标签: unix shell scripting ksh

  

x = 102 y = x

表示当我回显$ y时,它给出了x echo $ y x - 而不是102

当我回显$ x时,它会给出102

让我说我知道y里面是什么

我希望x的值能够像这样使用y来回显

a=`echo $(echo $y)`
echo $a

Ans 102

2 个答案:

答案 0 :(得分:4)

您需要告诉shell两次评估您的命令 - 一次将$ y转换为x,再次获得$ x的值。我知道这样做最便携的方式是使用eval:

$ /bin/sh
$ x=100
$ y=x
$ echo $y
x
$ eval echo \$$y
100
$

(您需要转义eval行中的第一个$,否则第一个评估将用当前pid替换“$$”)

如果你只关心bash,Ken​​nyTM的方法可能是最好的。

答案 1 :(得分:1)

在ksh 93中(我不知道这是否适用于ksh 88):

$ x=102; typeset -n y=x
$ echo $x
102
$ echo $y
102
$ echo ${!y}
x

令人困惑的是,最后两个命令与他们在Bash中执行的操作相反(不需要使用typeset标记变量)。