shell中eval的用法

转载 2013年12月02日 23:50:44


1. eval command-line

其中commandline是在终端上键入的一条普通命令行。然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次。如:

pipe="|"

eval ls $pipe wc -l

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

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

2. eval echo \$$# 取得最后一个参数

如:cat last

eval echo \$$#

./last one two three four

four

第一遍扫描后,shell把反斜杠去掉了。当shell再次扫描该行时,它替换了$4的值,并执行echo命令

3.以下示意如何用eval命令创建指向变量的“指针”:

x=100

ptrx=x

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

100 打印100

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

echo $x

50 打印50

Shell 中的 eval(如何将字符串当做变量名取值)

shell 中的 eval 功能说明:重新运算求出参数的内容。 语  法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。 参  数:参...
  • yan19880901
  • yan19880901
  • 2013年01月29日 13:03
  • 12072

第三部分 管理篇 第九章 MongoDB shell之eval、进程

MongoDB进程管理
  • u014548782
  • u014548782
  • 2015年01月12日 10:04
  • 2297

shell中eval的神奇之法,shell中引号的争端

话说大家都知道,shell中的变量是等价替换的。例如下面这个例子: 上面这个结果就是表示给变量cmd赋值为ls -lrt  ,然后直接使用变量就相当于执行了ls -lrt ...
  • jeremysong88
  • jeremysong88
  • 2016年04月18日 21:48
  • 1250

[ASP_NET]DataBinder_Eval用法_學習 積累 進步

  • 2008年09月06日 17:25
  • 25KB
  • 下载

C# Eval在asp.net中的用法及作用

转自:http://www.cnblogs.com/Mr_JinRui/archive/2010/07/06/1772129.html Eval( " ")和Bind( " ...
  • xiaoxiali
  • xiaoxiali
  • 2012年06月25日 14:18
  • 384

shell-脚本-eval命令

eval命令 eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量,该命令对变量进行两次扫描 范例 [root@server ~...
  • ITlinuxP
  • ITlinuxP
  • 2018年01月02日 20:11
  • 33

Shell处理命令的内部机制 和eval

看图说文! 命令行处理解释了Shell如何处理一个命令的内部机制: Shell从标准输入或脚本读取的每一行称为管道线(pipeline),每一行包含一个或多个命令,这些命令用管道符隔开,Shell...
  • beautysleeper
  • beautysleeper
  • 2016年09月20日 19:22
  • 464

Shell中, eval的用法

简介eval是Shell内置的命令。基本用法如下:eval [arguments]主要功能是读入arguments并执行之。arguments的退出码(Exit Code)会被当做eval的退出码。如...
  • lslxdx
  • lslxdx
  • 2017年03月17日 16:35
  • 621

Shell中单、双引号,参数作用域和eval的问题学习

自定义一个net函数,目的是从ifconfig的输出结果中截取网卡的ip ,netmask和broadcast信息 ##ip netmask broadcast function net() {...
  • jiazhanwei365
  • jiazhanwei365
  • 2013年08月12日 22:55
  • 3124

shell中反引号和$()的区别以及eval命令

反引号和$()的区别 反引号和$()都是shell脚本中用来进行命令代换的命令,命令代换就是运行一个命令将其结果交给一个变量。 echo ‘echo \\ ’ //反引号 ...
  • Payshent
  • Payshent
  • 2017年07月12日 22:11
  • 1022
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shell中eval的用法
举报原因:
原因补充:

(最多只允许输入30个字)