eval的一个用法

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
tosail2010
帖子: 83
注册时间: 2011-03-27 19:01
联系:

eval的一个用法

#1

帖子 tosail2010 » 2012-02-10 9:03

最近,看shell脚本,遇到这样一条指令

代码: 全选

eval $0 force
force 在这里表达什么意思?不解。
A year's plan starts with spring.
头像
wjchen
帖子: 583
注册时间: 2011-05-02 19:08
系统: ubuntu 12.04

Re: eval的一个用法

#2

帖子 wjchen » 2012-02-10 10:54

force是$0的参数,$0就是你正在看的这个shell脚本的名字。这个脚本的其他地方应该有写如果第一个参数是force应该做什么。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: eval的一个用法

#3

帖子 tusooa » 2012-02-12 18:57

tosail2010 写了:最近,看shell脚本,遇到这样一条指令

代码: 全选

eval $0 force
force 在这里表达什么意思?不解。
命令的参数。

代码: 全选

] ls -ld //
头像
tosail2010
帖子: 83
注册时间: 2011-03-27 19:01
联系:

Re: eval的一个用法

#4

帖子 tosail2010 » 2012-02-14 15:31

wjchen 写了:force是$0的参数,$0就是你正在看的这个shell脚本的名字。这个脚本的其他地方应该有写如果第一个参数是force应该做什么。
eval是对参数进行求值,那这个值是多少呢?
A year's plan starts with spring.
头像
wjchen
帖子: 583
注册时间: 2011-05-02 19:08
系统: ubuntu 12.04

Re: eval的一个用法

#5

帖子 wjchen » 2012-02-14 18:53

eval是对参数进行求值,那这个值是多少呢?
对参数进行求值?不懂你的意思。
eval是将后面所有的参数组合起来看成一条命令(先进行一次shell变量替换),执行这条命令,返回这条命令的退出状态(成功或失败)。
比如你这个脚本名字叫script.sh,那么eval $0 force就相当于执行“script.sh force”这个命令。
头像
tosail2010
帖子: 83
注册时间: 2011-03-27 19:01
联系:

Re: eval的一个用法

#6

帖子 tosail2010 » 2012-02-15 9:34

“对参数进行求值”,这句话的确让人费解。 不过我是引用<Linux程序设计的>的原话。你解释的很透彻,谢谢!

这次引用shell对eval命令的描述:Execute arguments as a shell command.
A year's plan starts with spring.
回复