eval解析及反引号与$()区别
来源:互联网 发布:淘宝网男装鞋 编辑:程序博客网 时间:2024/06/07 20:19
eval
语法:eval cmdLine
eval会对后面的cmdLine进行两遍扫描,如果第一遍扫描后,cmdLine是个普通命令,则执行此命令;如果cmdLine中含有变量的间接引用,则保证间接引用的语义。
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.获得最后一个参数
例如:set 11 22 33 44
(1) 如果要输出最近一个参数,即44,可以使用如下命令:
echo $4
(2) 如果我们不知道有几个参数的时候,要输出最后一个参数,大家可能会想到使用$#来输出最后一个参数,
如果使用命令:
echo "\$$#"//则得到的结果是 $4,而不是我们想要的44。这里涉及到一个变量间接引用的问题,我们的本意是输出 $4,默认情况下,命令后忽略变量间接引用的情况。
(3) 这时候,就可以使用eval命令。
eval echo "\$$#"
得到的结果为44
$()和反引号的区别
反引号和 $() 的功能是命令替换,将反引号或$()中的字符串做为命令来执行,我们在用shell编程时经常用的到将系统命令的执行结果赋给一个变量
注意:反引号内不能再引用反引号,而$()中可以引用反引号
阅读全文
0 0
- eval解析及反引号与$()区别
- 反引号与$()的区别以及eval的作用
- shell中的eval以及与 反引号``、$()的区别
- shell脚本语言中的反引号与$()的介绍及区别
- shell脚本中命令代换:反引号、$()、eval区别
- shell中反引号和$()的区别以及eval命令
- shell中的反引号与$()区别
- 反引号与$()有没有区别?
- linux中反引号`与$()得区别
- shell---反引号,$( )以及eval的比较
- 【shell】反引号(`)与$()的作用与区别
- Linux中单引号双引号反引号的区别与应用
- 数据库语句的单引号与反引号区别
- Shell中反引号(`)与$()用法的区别
- Shell中反引号(`)与$()用法的区别
- Shell中反引号(`)与$()用法的区别
- Shell中反引号(`)与$()用法的区别
- eval ,倒引号 及$( ) 使用调研
- 面试题39—相关题目(判断平衡二叉树)
- 贝叶斯深度学习——基于PyMC3的变分推理
- SpringBoot入门(一)
- 0024_Swap Nodes in Pairs
- 32,64位编译环境下的sizeof问题经常出现。
- eval解析及反引号与$()区别
- 机器学习--神经网络算法系列--梯度下降与随机梯度下降算法
- 【Android】第4章 数据存储(上)
- POJ 2421 Constructing Roads 笔记
- 简单导出excel
- 小背包
- 面试题40—数组只出现一次的数字
- 【转载 Hadoop&Spark 动手实践 2】Hadoop2.7.3 HDFS理论与动手实践
- java中jvm之我理解