文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>eval用法总结

eval用法总结

时间:2010-12-02  来源:taosk

eval用法总结

1. 工作原理及用法

用法:eval command-line

原理:eval主要用在对参数的特殊处理上面的,一般的命令行,shell处理参数就只执行一遍,像转义和变量转变;但加上eval后就可以对参数经行两遍处理;网上有说是对command-line处理两遍,我认为是不合理的。一个eval只能使shell对参数多一次处理,因此有几个eval就可以多加几次,即eval eval command-line 这样就能对参数进行三次编译,但此时应特别注意参数的转义,下面有例子说明。

2. 举例讲解

例一:(网络下载)

pipe="|"

eval ls $pipe wc -l

shell第1次扫描命令行时,它替换出pipe的值|,接着eval使它再次扫描命令行,这时shell把|作为管道符号了。

如果变量中包含任何需要shell直接在命令行中看到的字符(不是替换的结果),就可以使用eval。命令行结束符(; | &),I/o重定向符(< >)和引号就属于对

shell具有特殊意义的符号,必须直接出现在命令行中。

x=100

ptrx=x

eval echo \$$ptrx 指向ptrx,用这里的方法可以理解b中的例子

100 打印100

eval $ptrx=50 将50存到ptrx指向的变量中。

echo $x

50 打印50

例二:

root@localhost:~/test#set tao shou kun 

root@localhost:~/test#echo \$$#

$3

root@localhost:~/test#eval echo \$$#

kun

root@localhost:~/test#

例三:(对三重的支持)

root@localhost:~/test#aabbcc=alibaba

root@localhost:~/test#a=aa

root@localhost:~/test#b=bb

root@localhost:~/test#c=cc

root@localhost:~/test#alibaba="hello world"

root@localhost:~/test#eval echo \$\$$a$b$c

11990aabbcc

root@localhost:~/test#eval echo \\$\$$a$b$c

$alibaba

root@localhost:~/test#eval eval echo \$\$$a$b$c

11990aabbcc

root@localhost:~/test#eval eval echo \\$\$$a$b$c

hello world

注意这里的参数转义,第一遍处理后参数应该是:\$$aabbcc,第二次是:$alibaba,第三次就正好是:hello world。


排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载