linux脚本语言之shell 中的eval
来源:互联网 发布:ubuntu chrome 安装 编辑:程序博客网 时间:2024/04/28 05:25
一.关于eval
二.测试用例
eval命令可以用于回显简单变量,不一定是复杂变量 例1.
[neau@mail ~]$ NAME=VALUEBANK[neau@mail ~]$ eval echo $NAME//结果为:VALUEBANK[neau@mail ~]$ echo $NAME//结果为:VALUEBANK
对变量第二次扫描 例2.
v1="francs"v2="fpZhou"c=1echo ${c}vname=v$c echo ${vname}eval vvv="$"$vname echo ${vvv}
结果图:
总结:
如果
执行含有字符串的命令 例3.
首先创建一个名为test 的小文件如下:
[corrinr@localhost myscript]$ //结果为:vi text[corrinr@localhost myscript]$ ls//结果为:text[corrinr@localhost myscript]$ cat text//结果为:how are you?//结果为:I am fine,thanks
myfile="cat text"
echo $myfile//结果为:cat text
eval $myfile
-
#!/bin/bashecho "Total of the arguments passed $#"echo "The process Id is $$"echo "Last argument is "$(eval echo \$$#)""
结果图:
在上面的脚本中, eval命令首先把 $$#
解析为当前shell的参数个数,然后在第二次扫描时得出最后一个参数。
如果使用命令:
echo ” \ $$#”
则得到的结果是 $4,而不是我们想要的44。这里涉及到一个变量间接引用的问题,我们的本意是输出 $4,默认情况下,命令后忽略变量间接引用的情况。
这时候,就可以使用eval命令.
eval echo “\$$#”
得到的结果为44
三.shell 中的倒引号 “eval 和 $() 的区别
倒引号括起来的是一条命令,
以下情况倒引号和 $()可以互换
例6 写如下代码在test.sh中 :
!/bin/bashecho `date`echo "-----------------"echo $(date)
- 反引号和$()的区别
!/bin/bashecho `echo \\`echo `echo \\\\`echo $(echo \\)echo $(echo \\\\)
通过上述的测试,我们可以发现:
1.反引号齐本身就对\进行了转义,保留了其本身意思,如果我们想在反引号中起到\的特殊意义,我们必须使用2个\来进行表示。所以我们可以简单的想象成反引号中 \ = \
2. $()中则不需要考虑\的问题,与我们平常使用的一样 \ = \
- linux脚本语言之shell 中的eval
- linux shell之eval
- linux shell中的eval命令
- Linux shell之eval、``与$()
- linux shell中的 eval , ` ` , $() 命令
- Linux下shell脚本中的eval命令
- shell中的eval
- shell中的eval命令
- shell中的eval
- shell 中的 eval
- shell中的eval与$(())
- shell中的eval
- linux shell的eval
- linux shell eval命令
- shell之eval用法
- shell符号之 eval `` $()
- linux shell脚本语言之循环结构与function用法
- Linux--shell中的命令替换``与$()以及eval命令
- linux 常用命令
- java集合之LinkedList
- C#实现的系统内存清理
- 二叉树中的最大路径和-LintCode
- iOS之MVVM架构
- linux脚本语言之shell 中的eval
- Tyvj 1728 普通平衡树
- 谈谈对Spring框架的理解
- 从机器学习谈起
- 【Opencv】使用二维特征点(Features2D)和单映射(Homography)寻找已知物体
- POJ 2395 Out of Hay 最小生成树 Kruskal
- Android
- Hadoop是什么?
- node图片处理工具gm的使用:图片水印、图片验证码、图片裁剪示例