Linux: shell命令 eval (有图有代码有真相!!!)

一、eval 命令定义

shell中的eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。

该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。不过这些变量本身并不复杂。eval 命令也可以

用于回显简单变量,不一定是复杂变量。


功能说明:告知shell取出eval的参数,重新运算求出参数的内容。
语   法:eval [参数]
补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。
参  数:参数不限数目,彼此之间用分号分开。


二、eval  功能


1 执行含有字符串的命令

首先我们首先创建一个名为test的小文件,在这个小文件中含有一些文本。接着,将cat test赋给变量myfile,

现在我们 echo 该变量,看看是否能够执行上述命令。


将cat testf赋给变量myfile

myfile="cat test"

如果我们 echo 该变量,我们将无法列出 test 文件中的内容。

echo $myfile

cat test

让我们来试一下e v a l命令,记住e v a l命令将会对该变量进行两次扫瞄。

eval $myfile

this is a test

hello world

从上面的结果可以看出,使用 eval 命令不但可以置换该变量,还能够执行相应的命令。第

一次扫描进行了变量置换,第二次扫描执行了该字符串中所包含的命令cat test。

2 命令还可以用来显示出传递给脚本的最后一个参数


在上面的脚本中, eval 命令首先把 $ $# 解析为当前 shell 的参数个数,然后在第二次扫描时

得出最后一个参数。

3 给每个值一个变量名

可以给一个值一个变量名。下面我对此做些解释,假定有一个名为test1的文件,

你希望该文件中的第一列成为变量名,第二列成为该变量的值,这样就可以:





4 执行命令行之前扫描它两次,再次运算求出参数的内容。







三、与命令代换的区别

shell中的eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。

该命令对变量进行两次扫描,然后进行所有的替换。而命令代换的意识是:先完成引号里/括号里的命令行,然后将其结果替换出来,

再重组成新的命令行。shell脚本里,可用于命令代换的有反引号 ` `和 $() 。





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:shell脚本命令: /dev/null 21 的理解

1、可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用. 禁止标准输出. 1 cat $filename >/dev/null # 文件内容丢失,而不…

qlabel可以选中吗_惊现凡尔赛式排版!原来微信公众号排版样式还可以“变装”?...

各位小伙伴们,要集中注意力了!接下来就是考验你们观察力的时候啦!快跟着小妹儿看一下,一个样式到底能有多少种玩法?文中使用工具为公众号编辑器-小蚂蚁编辑器。1、添加/删除背景编辑器里的内容样式是可以增加或者删除背…

LInux:shell 彩色进度条实现(有图有代码有真相!!!)

一、进度条原理(以前的博客详细讲述过):http://blog.csdn.net/sharp_up/article/details/55506555 二、颜色设置 // 字体颜范围(前景颜色):30~39 30:黑 31:红 32:绿 33:黄 34:蓝色 35:紫色 36:深绿 37:白色 // 字背景颜色范围(背景颜…

vb语言中怎样编码窗体中所有字体加粗_VBText控件中使字体加粗和倾斜的代码是什么...

展开全部VBText控件中使字体加粗和倾e69da5e6ba9062616964757a686964616f31333365656537斜的代码是:加粗 Label1.FontBold True斜体 Label1.FontItalic true拓展资料:TextBox控件:a. 控制Textbox输入格式,我想大多人都遇到这个…

Linux: 系统配置 crond 和 crontab(有图有代码有真相!!!)

1、相关概述 linux下工作调度的种类有:at , cron 一种是例行性的,就是每隔一定的周期来办某事。 一种是突发性的,就是做完这一次没有以后。 crontab这个命令所设置的工作将会一直循环进行下去,循环的时间可以是分钟、小时、…

前端radio单选框默认选中_「radio选中」单选框radio总结(获取值、设置默认选中值、样式) - seo实验室...

radio选中单选框 radio是否1.获取值$("input[namekillOrder]:checked").val();$(input:radio:checked).val();$("input[typeradio]:checked").val();$(":radio[checked]").each(function(radio){alert($(this).val());2.设置第一个Ra…

LInux:shell 命令:字符串截取

1、cut命令截取 使用说明 cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。 如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。 主要参数 -b :以字节为单位进行分割。这些字节位置将忽…

cocostuff10k数据集介绍_(六)COCO数据集的简单介绍

COCO通过大量使用Amazon Mechanical Turk来收集数据。COCO数据集现在有3种标注类型:object instances(目标实例), object keypoints(目标上的关键点), 和image captions(看图说话),使用JSON文件存储。比如下面就是Gemfield下载的COCO 2017年训练集中的标…

数据结构:单链表操作之如何判断链表是否带环及相关操作

//判断链表是否有环 int HasCircle(Node* pHead) { Node* lowpHead; Node* fastpHead; while(fast ! NULL && fast->next ! NULL) { lowlow->next; fastfast->next->next; if(lowfast) return 1; } return 0; } 时…

smart700iev3 程序下载设置_分享一款Aira2下载工具

Qdown,一款新的Aria2下载器,Aria2是一个命令行的下载器,非常强大,本软件套壳了Aria2,并且制作了界面版本,使用体验不错。Qdown是一款基于Aria2的Windows文件下载器,几乎支持现阶段所有的下载协议…

引用js_js值和引用

值和引用在许多编程语言中,赋值和参数传递可以通过值复制或者引用复制来完成,这取决于我们使用什么语法。例如,在 C 中如果要向函数传递一个数字并在函数中更改它的值,就可以这样来声明参 数 int& myNum,即如果传递…

]数据结构:单链表之判断两个链表是否相交及求交点(带环、不带环)

1、判断两个链表是否相交,若相交,求交点。(假设链表不带环) 两个指针同时指向两个链表,分别依次往后遍历链表到最后一个节点,如指针的值相同(即节点地址相同),反之没有交…

某月某日前包括当天吗_10月26日,你真的理解了导数的定义吗?(答思考题送猫王小音箱)...

点击并关注上方“鸡汤斋”,与斋主一起成长特别说明:公众号的“一天一题”都是从历年期中、期末,以及各个高等学校或者国家统一的考研试题中抽取的题目进行的详细讲解。如果您每天在固定的时间(无聊时、吃饭时、睡觉前、早上起床前、“吃鸡”前…

数据结构:栈和列之如何用两个队列实现一个栈?两个栈实现一个队列?

1、栈和队列分析 栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行 队列(Queue)也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不出),而删 …

人脸识别进水_万维|人脸识别闸机怎么选?

如今人脸识别在安防行业的逐渐普及,现在已经有越来越多的场景都已应用人脸识别闸机,像办公大厦啊,景区门口,社区门口等,什么都不用带,只要刷个脸就行,方便快捷又省事。那么,你又对人…

基于udp的网络群聊系统

一、系统简介 这是一个基于udp协议的网络群聊系统,为什么选择udp协议呢?这就需要了解TCP协议与udp协议。 1)TCP(Transmission Control Protocol,传输控制协议) 是面向连接的协议,也就是说&…

c 打印 callback 函数名_Go 中的函数

1. 函数参数和返回值的写法如果有多个参数是同一个类型,可以简略写:func testReturnFunc(v1,v2 int)(int,int) {x1 : 2 * v1x2 : 3 * v2return x1,x2 }Go 还支持命名返回值的方式。命名返回值作为结果形参(result parameters)被初…

二叉树面试题:判断树是否为完全二叉树和求二叉树的镜像

1、判断二叉树是否为完全二叉树: 层序遍历,从上到下,从左到右,遍历二叉树; 当遇到一个节点的左子树为空时,则该节点的右子树为空和后面遍历的节点都为叶子节点,否则不是完全二叉树。 当该节点…

数据结构:将二叉搜索树转换成一个排序的双向链表

1、将二叉搜索树转换成一个排序的双向链表。提示:要求不能创建任何新的结点,只能调整树中结点指针的指向,也就是left当prev,right当next。--中序线索化的变型。 Node* BSTreeToList() {if(_pRoot NULL) return NULL; Node* p…

Android NDK 使用第三方静态库(转)

源:Android NDK 使用第三方静态库转载于:https://www.cnblogs.com/LittleTiger/p/4556382.html