语法:eval cmdLine

eval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,则执行此命令;如果cmdLine中含有变量的间接引用,则保证间接引用的语义。

举例如下:

set 11 22 33 44

如果要输出最近一个参数,即44,可以使用如下命令,

echo $4

但是如果我们不知道有几个参数的时候,要输出最后一个参数,大家可能会想到使用$#来输出最后一个参数,

如果使用命令:

echo "\$$#"

则得到的结果是 $4,而不是我们想要的44。这里涉及到一个变量间接引用的问题,我们的本意是输出 $4,默认情况下,命令后忽略变量间接引用的情况。

这时候,就可以使用eval命令。

eval echo "\$$#"

得到的结果为44

转自:http://www.2cto.com/os/201311/255577.html

1.eval命令将会首先扫描命令行进行所有的替换,憨厚再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。

2.eval也可以用于回显简单变量,不一定时复杂变量。

NAME=ZONE

eval echo $NAME等价于echo $NAME

3.两次扫描

test.txt内容:hello shell world!

myfile="cat test.txt"

(1)echo $myfile  #result:cat test.txt

(2)eval echo $myfile  #result:hello shell world!

从(2)可以知道第一次扫描进行了变量替换,第二次扫描执行了该字符串中所包含的命令

4.获得最后一个参数

echo "Last argument is $(eval echo \$$#)"

echo "Last argument is $(eval echo $#)"

转自:http://www.cnblogs.com/xdzone/archive/2011/03/15/1984971.html

linux shell中的eval命令相关推荐

  1. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  2. 【Linux入门到精通系列讲解】shell中的eval命令

    eval命令用法: 当我们在命令行前加上eval时,shell就会在执行命令之前扫描它两次.eval命令将首先会先扫描命令行进行所有的置换,然后再执行该命令.该命令适用于那些一次扫描无法实现其功能的变 ...

  3. [linux运维]1@linux shell中的实用命令

    函数传参 shell中如何写一个函数呢? 这个问题, 首先说, shell中的函数, 在方法体里, 没有形参, 都是通过默认的特殊值获得的, 比如$1, $2, 参数的数量用. 而传参呢, 也是通过方 ...

  4. Linux shell中在vim打开的文件中查找关键字

    linux shell中使用vi命令打开文本文件后,如果需要查找字符,可在normal模式下直接按"/"进入查找模式,输入要查找的字符并按下回车,vim会跳到第一个匹配的位置. 按 ...

  5. linux if else 格式,linux shell中 if else以及大于、小于、等于逻辑表达式

    在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示 ...

  6. linux shell中的命令自动补全(compgen complete)与 命令行参数解析

    linux shell中的命令自动补全(compgen complete)与 命令行参数解析 标签: shell脚本 2013-12-31 21:56 6661人阅读 评论(6) 收藏 举报 分类: ...

  7. Day25 linux shell中的特殊符号与命令

    2019独角兽企业重金招聘Python工程师标准>>> linux shell中的特殊符号 *:代表零个或多个任意字符 ?:只代表一个任意字符,不管是数字还是字母,只要是一个字符,都 ...

  8. linux判断目录是否存在命令,linux shell 中判断文件、目录是否存在的方法

    本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...

  9. linux脚本添加source,shell中的source命令的巧妙用法

    首先,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录.例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如sourc ...

最新文章

  1. opencv python下载_[福利] OpenCV4 Python 最新中文版官方教程来了(附下载)
  2. 雷达篇(六)电磁波的大气衰减
  3. python3 将unicode转中文
  4. php调用twitter api
  5. 避坑!用大数据告诉你,那些被淘汰的公司,都有哪些特征?
  6. python turtle菜鸟教程_Python 基础教程
  7. 前端面试基础题:请写出至少20个HTML5标签
  8. 【日语学习】动词、形容词、名词的敬体形、简体形
  9. python求一个数的因子_0是素数吗(python求一个数的因子)
  10. Linux添加路由的方法
  11. 写给四年前刚开始编程的自己
  12. 项目落地 - 智慧海绵城市(物联网技术应用)
  13. 倒立摆系统分析及控制
  14. Python学习笔记(一):编程和Python
  15. pako java_java压缩字符串,前端接收pako解压
  16. 基于matlab的简单的寻找波峰波谷处理方法
  17. mac电脑磁盘硬盘爆满了怎么办?
  18. HTML基础 - HTML表格
  19. 刷题day65:整数拆分
  20. (详解)矩阵快速幂详解与常见转移矩阵的构造

热门文章

  1. arduinojson 转 string_安德胜工作室发来本周五嗨唱转起来第二季首秀的嘉宾剧透...
  2. html htc控件详解,*.HTC 文件的简单介绍-网页设计,HTML/CSS
  3. python中的键不允许重复_为什么python允许您使用重复键创建字典
  4. kpi绩效考核流程图_公开!松松团队KPI绩效考核表分享
  5. 引用数据类型的方法调用
  6. C++ friend关键字
  7. Java中锁的使用和实现
  8. junit版本_Junit-jupiter-api 和 junit-jupiter-engine 的区别是什么
  9. jq 比较两个时间是否在同一天_jq: 属性-class
  10. 灰色预测法 —— python