回声值里面的变量?

问题描述:

X = 102 Y = X回声值里面的变量?

意味着当我回声$ y的它给X 回波$ y的 X --and不102

,当我回声$ X它得到102

可以说我硝基甲苯知道里面是什么Ÿ

,我想x的值与使用Ÿ成才这样

相呼应
a=`echo $(echo $y)` 
echo $a 

答102

+2

如果您使用'bash',然后'echo $ {!y}'。 – kennytm 2010-06-09 15:42:18

+0

这对我有效echo $(($ y)) – Kimi 2010-06-09 15:48:14

+0

如果x是一个数字,因为'$(())'是算术扩展,所以可以工作。如果x是一些任意字符串,它将会给出0。 – 2010-06-09 20:09:41

你需要告诉shell两次评估您的命令 - 一旦打开$ Y到X,并再次获得$ x的值。我知道要做到这一点,最简便的方式是EVAL:

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

(你需要躲避第一$在EVAL线,否则第一次评估将取代“$$”当前PID)

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

在KSH 93(我不知道这是否工作在KSH 88):

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

令人困惑的是,在过去的两个命令他们在猛砸做相反的(这并不需要使用typeset来标记变量)。