zoukankan      html  css  js  c++  java
  • eval命令

    eval可以读取一连串的参数,然后按照参数特性来执行。参数数目不限,彼此之间用分号隔开。
    eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令;如果命令中含有变量的间接引用,则保证间接引用的语义。也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。因此,eval命令适用于那些一次扫描无法实现其功能的变量。
    eval 执行以下两个步骤:
    第一步,执行变量替换,类似与C语言的宏替代;
    第二步,执行替换后的命令串。
    下面来看几个例子:
    1、执行含有带字符串的命令
    我们可以新建一个文件test将字符串”HelloWorld!“写入文件中,把cat test赋值给变量WORD,如果我们echo WORD并不能的到test中的内容;然而eval WORD则能显示文件中的内容,因为eval命令对后面的命令进行了两次扫描,第一次将WORD替换为 cat test,第二次执行cat test。

     这些需要进行两次扫描的变量有时被称为复杂变量。不过这些变量本身并不复杂。eval命令不仅可以回显复杂变量,也可以用于回显简单变量。 
    2、回显简单变量 

    3、eval命令还可以获取传给shell的最后一个参数
    如果我们知道参数个数,我们想要查看最后一个参数的内容可以使用echo直接显示,如输入 first last两个参数我们可以用echo $2 来查看最后一个参数;
    但是,如果我们不知道参数个数还想查看最后一个参数内容该怎么办呢?这是我们就想到使用 $$#为传给shell脚本的参数个数,但是上例中 echo “$$#”后显示的其实是参数个数,而使用eval echo “$$#”才显示最后一个参数的内容。

     4、条件筛选 
    在file文件中写入两列数据,第一列对应KEY 、第二列为VALUE,使用eval命令将KEY与VALUE的值对应起来,从文件中读取

  • 相关阅读:
    1203正规式转换为有穷自动机
    访问本班同学的博客
    0312复利计算3
    操作系统
    0311复利计算2
    0309简单的复利计算
    0302IT行业虽吃香,能完全享受这块“香"的也很难
    12.30递归下降语义分析
    1203正规式转换为有穷自动机
    对10位同学的文法解释和语法树的评论
  • 原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/13158801.html
Copyright © 2011-2022 走看看