linux shell中的eval命令
语法: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命令相关推荐
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- 【Linux入门到精通系列讲解】shell中的eval命令
eval命令用法: 当我们在命令行前加上eval时,shell就会在执行命令之前扫描它两次.eval命令将首先会先扫描命令行进行所有的置换,然后再执行该命令.该命令适用于那些一次扫描无法实现其功能的变 ...
- [linux运维]1@linux shell中的实用命令
函数传参 shell中如何写一个函数呢? 这个问题, 首先说, shell中的函数, 在方法体里, 没有形参, 都是通过默认的特殊值获得的, 比如$1, $2, 参数的数量用. 而传参呢, 也是通过方 ...
- Linux shell中在vim打开的文件中查找关键字
linux shell中使用vi命令打开文本文件后,如果需要查找字符,可在normal模式下直接按"/"进入查找模式,输入要查找的字符并按下回车,vim会跳到第一个匹配的位置. 按 ...
- linux if else 格式,linux shell中 if else以及大于、小于、等于逻辑表达式
在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示 ...
- linux shell中的命令自动补全(compgen complete)与 命令行参数解析
linux shell中的命令自动补全(compgen complete)与 命令行参数解析 标签: shell脚本 2013-12-31 21:56 6661人阅读 评论(6) 收藏 举报 分类: ...
- Day25 linux shell中的特殊符号与命令
2019独角兽企业重金招聘Python工程师标准>>> linux shell中的特殊符号 *:代表零个或多个任意字符 ?:只代表一个任意字符,不管是数字还是字母,只要是一个字符,都 ...
- linux判断目录是否存在命令,linux shell 中判断文件、目录是否存在的方法
本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...
- linux脚本添加source,shell中的source命令的巧妙用法
首先,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录.例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如sourc ...
最新文章
- opencv python下载_[福利] OpenCV4 Python 最新中文版官方教程来了(附下载)
- 雷达篇(六)电磁波的大气衰减
- python3 将unicode转中文
- php调用twitter api
- 避坑!用大数据告诉你,那些被淘汰的公司,都有哪些特征?
- python turtle菜鸟教程_Python 基础教程
- 前端面试基础题:请写出至少20个HTML5标签
- 【日语学习】动词、形容词、名词的敬体形、简体形
- python求一个数的因子_0是素数吗(python求一个数的因子)
- Linux添加路由的方法
- 写给四年前刚开始编程的自己
- 项目落地 - 智慧海绵城市(物联网技术应用)
- 倒立摆系统分析及控制
- Python学习笔记(一):编程和Python
- pako java_java压缩字符串,前端接收pako解压
- 基于matlab的简单的寻找波峰波谷处理方法
- mac电脑磁盘硬盘爆满了怎么办?
- HTML基础 - HTML表格
- 刷题day65:整数拆分
- (详解)矩阵快速幂详解与常见转移矩阵的构造
热门文章
- arduinojson 转 string_安德胜工作室发来本周五嗨唱转起来第二季首秀的嘉宾剧透...
- html htc控件详解,*.HTC 文件的简单介绍-网页设计,HTML/CSS
- python中的键不允许重复_为什么python允许您使用重复键创建字典
- kpi绩效考核流程图_公开!松松团队KPI绩效考核表分享
- 引用数据类型的方法调用
- C++ friend关键字
- Java中锁的使用和实现
- junit版本_Junit-jupiter-api 和 junit-jupiter-engine 的区别是什么
- jq 比较两个时间是否在同一天_jq: 属性-class
- 灰色预测法 —— python