shell中的eval
eval语法
eval arg1 arg2 ...
eval的作用就是将后面的参数arg1 arg2等等当成一个pipeline,然后重新执行shell处理pipeline的流程(有关pipeline,参看http://www.cnblogs.com/chaoguo1234/p/5724321.html)
假设有如下脚本语句:
var="ls | more"
$var
上面的程序本意是列举当前目录的文件,然后使用more展示结果,但是实际执行情况会报错:
ls:can't access |:No Such file or directory
ls:can't access more:No Such file or directory
原因就是将$var进行命令替换之后,shell就进行命令查找,此时查找到命令是ls,后面的|和more都当成ls的参数,而当前目录中没有名为|和more的文件和目录,所以回报错。看一下shell处理命令的流程就清除了:

从上图可以看到,当执行完$var的变量扩展后,shell就要进行command查找。
解决的方式就是使用eval命令:
var="ls | more"
eval $var
进行完$var的变量替换之后,实际成为eval ls | more,然后根据eval的语法,shell会将ls | more当成一个pipeline,重新从上图中的第一步开始执行。
shell中的eval的更多相关文章
- shell 中的 eval 及 crontab 命令
eval eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令:如果命令中含有变量的间接引用,则保证间接引用的语义.也就是说,eval命令将会首先扫描命令行进行所有的置 ...
- shell中通过eval执行一个字符串命令
#!/bin/bash echo "Switch Directory : /home/pktgen-2.9.0" dir="/home/pktgen-2.9.0" ...
- shell中的set、seq、eval、exec、&&和||
一.set 查看set 帮助: bash -c "help set" 选项: -e:任何命令执行失败(非0 status)直接退出 -x: 打印执行过程的命令行.参数 +e:命令执 ...
- shell中的变量与eval(转)
原文链接:http://www.361way.com/shell-eval-variable/4957.html shell 中经常会用到变量的嵌套的情况.比如,单个或多个变量的值作为变量名,再对该变 ...
- shell中eval的使用问题
转载:http://www.blogjava.net/jasmine214--love/archive/2010/11/26/339106.html 本文将会讲解一些linux中命令的使用与技巧希望对 ...
- 脚本乐园 Shell中命令行选项和参数的处理
在Linux的Shell中怎样处理tail -n 10 access.log这样的命令行选项呢?这是被别人问起的一个问题,好好学习了一下,进行总结如下:在bash中,可以用以下三种方式来处理命令行参数 ...
- [记录]Shell中的getopts和getopt用法
Shell中的getopts和getopt用法 1.getopts getopts(shell内置命令)不能直接处理长的选项(如:--prefix=/home等),getopts有两个参数,第一个参数 ...
- Shell中的数组及其相关操作
http://blog.csdn.net/jerry_1126/article/details/52027539 Shell中数据类型不多,比如说字符串,数字类型,数组.数组是其中比较重要的一种,其重 ...
- shell中信号处理
参考: Shell 脚本中信号处理实践 Linux Shell 的信号 trap 功能你必须知道的细节 在 unix 里,可能发生的每一种类型的事件都是由一个独立的信号来描述,每一个信号都是一个小 ...
随机推荐
- php单词里的大写字母
$flag = preg_match("/[A-Z]/","abcDddd",$matches,PREG_OFFSET_CAPTURE);if($flag){ ...
- python 装饰器简介
24.装饰器 1.@ + 函数名:#1自动执行outer函数并且将下面的函数名f1当做参数传递 #2将outer函数的返回值,重新赋值给f1. def ou ...
- 一条带分页的sql
SELECT * FROM (SELECT USERID, TYPE, TYPE_DESC, SEX, USERNAME, HEADPORTRAIT, HOSPITAL, HLEVEL, DEPT, ...
- MMDrawerController 使用遇到的问题及定制
MMDrawerController 1,集成UIViewController * leftDrawer = [[UIViewController alloc] init]; UIViewContro ...
- 从别人写的 Object-C 中 Singleton (单例) 模式 中的一些理解--备
关于 面向对象的设计模式 对于面向对象的设计模式,想必大家并不陌生吧. 纵观23种设计模式中,数单例模式(Singleton)和工厂模式(Factory Method)最为熟悉和基础吧.当然,本文总结 ...
- 限制对比度自适应直方图均衡(Contrast Limited Adaptive histgram equalization/CLAHE)
转自:http://www.cnblogs.com/Imageshop/archive/2013/04/07/3006334.html 一.自适应直方图均衡化(Adaptive histgram eq ...
- PHP PDO 安装使用
PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的 ...
- HDOJ 1326 Box of Bricks(简单题)
Problem Description Little Bob likes playing with his box of bricks. He puts the bricks one upon ano ...
- 最近两场比赛 CF 285 & TC 646
Codeforces 285 这场rating又掉了,好在只掉了十多. 题目比较水,但是我比赛时居然只艰辛地过了前两道. 504A 由于图是森林,所以一定有度为1的点,把这些点删了后图还是森林.然后就 ...
- jquery绑定事件on的用法
语法 $(selector).on(event,childSelector,data,function,map) 参数 描述 event 必需.规定要从被选元素移除的一个或多个事件或命名空间.由空格分 ...