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如何处理一个命令的内部机制: Shell从标准输入或脚本读取的每一行称为管道线(pipeline),每一行包含一个或多个命令,这些命令用管道符隔开,Shell...

Shell中, eval的用法

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

linux脚本语言之shell 中的eval

一.关于eval一.关于eval功能说明:eval的作用是再次执行命令行处理,也就是说,对一个命令行,执行两次命令行处理功能说明:eval的作用是再次执行命令行处理,也就是说,对一个命令行,执行两次命...

shell 中的 eval学习与应用

一、bash命令处理的12个步骤; 1、将命令行分成由固定元字符集分隔的记号; SPACE, TAB, NEWLINE, ; , (, ), , |, & 记号类型包括单词,关...

Linux 中shell脚本/eval调研

eval可以读取一连串的参数,然后按照参数特性来执行。参数数目不限,彼此之间用分号隔开。  eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令;如果命令中含有变量的...

Shell的两种命令替换与eval 命令

转载自:http://blog.csdn.net/lf_2016/article/details/654474571.shell中有两种命令替换:他们之间的区别在于 在多层次的复合替换命令中,倒引号...

linux shell eval命令

本文将会讲解一些linux中命令的使用与技巧希望对新手给予帮助 一 e v a l命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量。该命令对变量进...

Linux:shell脚本之命令替换(eval,反引号和$())

关于shell脚本中的反引号、$()与eval实行命令替换的区别与联系
  • if9600
  • if9600
  • 2017年07月03日 17:33
  • 275

linux shell的eval

linux 中的eval 是一个经常需要用的命令 其结果就是在shell执行命令前,将命令扫描两次,第一次做变量的替换,第二次用替换后的进行执行。 #!/bin/bash cmd1="date" ...
  • fox1987
  • fox1987
  • 2013年12月06日 10:06
  • 957
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shell中eval的用法
举报原因:
原因补充:

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