x = 102 y = x
表示当我回显$ y时,它给出了x echo $ y x - 而不是102
当我回显$ x时,它会给出102
让我说我知道y里面是什么
我希望x的值能够像这样使用y来回显
a=`echo $(echo $y)`
echo $a
Ans 102
答案 0 :(得分:4)
您需要告诉shell两次评估您的命令 - 一次将$ y转换为x,再次获得$ x的值。我知道这样做最便携的方式是使用eval:
$ /bin/sh
$ x=100
$ y=x
$ echo $y
x
$ eval echo \$$y
100
$
(您需要转义eval行中的第一个$,否则第一个评估将用当前pid替换“$$”)
如果你只关心bash,KennyTM的方法可能是最好的。
答案 1 :(得分:1)
在ksh 93中(我不知道这是否适用于ksh 88):
$ x=102; typeset -n y=x
$ echo $x
102
$ echo $y
102
$ echo ${!y}
x
令人困惑的是,最后两个命令与他们在Bash中执行的操作相反(不需要使用typeset
标记变量)。