今天主要介绍一个shell脚本中比较少见的命令--eval
功能说明 :重新运算求出参数的内容。
语 法 :eval [参数]
补充说明 :eval可读取一连串的参数,然后再依参数本身的特性来执行。
参 数 :参数不限数目,彼此之间用分号分开。
eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。eval也可以用于回显简单变量,不一定是复杂变量。
eval的作用是再次执行命令行处理,也就是说,对一个命令行,执行两次命令行处理。这个命令要用好,就要费一定的功夫。下面用几个例子帮助大家理解下。
1、eval一个命令
eval echo相当于echo
2、两次扫描
该命令适用于依次扫描无法完成其功能的变量。
第一步:对eval后面的命令进行扫描,执行变量替换,普通命令保留
第二步:执行变量替换后的命令串
3、获得最后一个参数
4、用eval技巧实现shell的控制结构for
用eval技巧实现shell的控制结构for
输出结果:
注意:bash里有两个很特殊的变量,它们保存了参数列表。
这里我使用了函数递归以及eval实现了for结构。
当执行eval $@时,它经历了步骤如下:
第1步,分割成eval $@
第6步,扩展$@为hostname
第11步,找到内置命令eval
重复一次命令行处理,第11步,找到hostname命令,执行。
eval是对Bash Shell命令行处理规则的灵活应用,进而构造"智能"命令实现复杂的功能。上面提及的命令是eval其中一个很普通的应用,它重复了1次命令行参数传递过程,纯粹地执行命令的命令。其实它是bash的难点,是高级bash程序员的必修技能。
shell:
shell是系统的用户界面,提供了用户与内核进行交互 *** 作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。
命令行(命令提示符):
命令行一般指命令提示符。命令提示符是在 *** 作系统中,提示进行命令输入的一种工作提示符。在不同的 *** 作系统环境下,命令提示符各不相同。
终端:
终端terminal通常是指那些与集中式主机系统相连的“哑”用户设备。终端从用户接收键盘输入,并且将这些输入发送给主机系统。主机系统处理这个用户的键盘输入和命令,然后输出返回并显示在这个终端的屏幕上。
以上就是关于如何利用shell脚本中的eval命令来构造"智能"命令全部的内容,包括:如何利用shell脚本中的eval命令来构造"智能"命令、用linux shell命令运行一段显示1~5的程序,到底哪里出了错、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)