Chinaunix首页 | 论坛 | 博客
  • 博客访问: 185831
  • 博文数量: 40
  • 博客积分: 2576
  • 博客等级: 少校
  • 技术积分: 494
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-14 17:19
文章分类

全部博文(40)

文章存档

2011年(21)

2010年(19)

我的朋友

分类: LINUX

2010-12-02 16:00:48

eval用法总结

1. 工作原理及用法

用法eval command-line

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

2. 举例讲解

例一:(网络下载)

pipe="|"

eval ls $pipe wc -l

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

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

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


阅读(1989) | 评论(1) | 转发(1) |
0

上一篇:awk基本用法总结

下一篇:tr命令用法详解

给主人留下些什么吧!~~

chinaunix网友2010-12-03 15:23:36

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com