Chinaunix

标题: 请教一个关于eval的问题 [打印本页]

作者: xyystone    时间: 2005-05-12 16:53
标题: 请教一个关于eval的问题
$ x=10      
$ y=x
$ eval print $$y
12098y

$ x=10
$ y=x
$ eval print $($y)
ksh: x:  not found

$ eval print \$$y
10

为什么需要转义字符\,我觉得加了\之后$就被屏蔽了,按字符表面的意思理解,所以$ eval print \$$y 的结果应该是$x。
请高手帮忙,谢谢!
作者: pvb1979    时间: 2005-05-12 17:44
标题: 请教一个关于eval的问题
eval是执行两次扫描,第一次扫描是print $x,第二次扫描进行替换,10。

$ eval print $$y
12098y

$$ 表示进程号。
作者: lych    时间: 2005-05-12 18:00
标题: 请教一个关于eval的问题
原帖由 "xyystone" 发表:
$ x=10      
$ y=x
$ eval print $$y
12098y

$ x=10
$ y=x
$ eval print $($y)
ksh: x:  not found

$ eval print \$$y
10

为什么需要转义字符\,我觉得加了\之后$就被屏蔽了,按字符表面的意思理解?.........

print第一次扫描的时候\$是吧$符号屏蔽了,所以第一次输出的是$x,eval命令使print又扫描$x,所以就......明白了?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2