回声值里面的变量?
问题描述:
X = 102 Y = X回声值里面的变量?
意味着当我回声$ y的它给X 回波$ y的 X --and不102
,当我回声$ X它得到102
可以说我硝基甲苯知道里面是什么Ÿ
,我想x的值与使用Ÿ成才这样
相呼应a=`echo $(echo $y)`
echo $a
答102
答
你需要告诉shell两次评估您的命令 - 一旦打开$ Y到X,并再次获得$ x的值。我知道要做到这一点,最简便的方式是EVAL:
$ /bin/sh
$ x=100
$ y=x
$ echo $y
x
$ eval echo \$$y
100
$
(你需要躲避第一$在EVAL线,否则第一次评估将取代“$$”当前PID)
如果你只关心bash,KennyTM的方法可能是最好的。
答
在KSH 93(我不知道这是否工作在KSH 88):
$ x=102; typeset -n y=x
$ echo $x
102
$ echo $y
102
$ echo ${!y}
x
令人困惑的是,在过去的两个命令他们在猛砸做相反的(这并不需要使用typeset
来标记变量)。
如果您使用'bash',然后'echo $ {!y}'。 – kennytm 2010-06-09 15:42:18
这对我有效echo $(($ y)) – Kimi 2010-06-09 15:48:14
如果x是一个数字,因为'$(())'是算术扩展,所以可以工作。如果x是一些任意字符串,它将会给出0。 – 2010-06-09 20:09:41