2010-06-09 58 views
1

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

回答

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

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

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

令人困惑的是,在過去的兩個命令他們在猛砸做相反的(這並不需要使用typeset來標記變量)。