eval如何使用?

引用:
原帖由 blackspace 于 2008-10-19 20:21 发表
我又学一边bash,我分析的对不
正确       
我还是不太明白,为什么第一个就事字符串赋值,而第二个就事数组呢?      
另外,下面的情况如何解释?
[amuse@ca*ca* ~]$ example="date"
[amuse@ca*ca* ~]$ $example
二 10月 21 18:18:21 CST 2008
[amuse@ca*ca* ~]$ eval $example
二 10月 21 18:18:29 CST 2008
[amuse@ca*ca* ~]$ example="date|grep CST"
[amuse@ca*ca* ~]$ $example
bash: date|grep: command not found
[amuse@ca*ca* ~]$ eval $example
二 10月 21 18:19:02 CST 2008
我只在字符串中加入了"|grep CST",用第一种方法就不行了,而用eval就可以,为什么?      
第一种方法被 bash 解释后效果是这样的:
$ date\|grep CST

第二种方法首先被 shell 解释成:
$ eval date\|grep CST
然后 eval 把它的参数原封不动的交给 shell 去执行, 跟你自己在命令行上输入效果是一样的:
$ date|grep CST      
不太好描述, 哪天 TUDOU01 来北京我当面给你解释哈       
非常感谢dearvoid,不知道你在北京什么地方啊?      
引用:
原帖由 TUDOU01 于 2008-10-25 11:04 发表
非常感谢dearvoid,不知道你在北京什么地方啊?
不是真要来吧       
一年基本上只有1次机会去北京,很少的.      
来深圳的话我负责招待哈