X = 102 Y = X回聲值裏面的變量?
意味着當我回聲$ y的它給X 回波$ y的 X --and不102
,當我回聲$ X它得到102
可以說我硝基甲苯知道里面是什麼Ÿ
,我想x的值與使用Ÿ成才這樣
相呼應a=`echo $(echo $y)`
echo $a
答102
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