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

    例子2:一个典型错误的例子

    错误!这里给个典型的例子大家看看。

    [root@localhost ~]# eval b="aa ls -al | grep cen"
    -rw-r--r-- 1 root root 360742400 Aug 9 19:18 centos7java.tar



    [root@home root]# a="id | cut -f1 -d' '"
    [root@home root]# $a
    id:无效选项 #  f
    请尝试执行‘id # help’来获取更多信息。
    [root@home root]# eval $a
    uid=0(root)

    如果命令行复杂的话(包括管道或者其他字符),直接执行$a字符串的内容就会出错。分析如下。
    $a的处理位于第6步──参数扩展,也就是说,跳过了管道分析,于是"|", "cut", "-f1", "-d"都变成了id命令的参数,当然就出错啦。
    但使用了eval,它把第一遍命令行处理所得的"id", "|", "cut", "-f1", "-d"这些字符串再次进行命令行处理,这次就能正确分析其中的管道了。

    总而言之:要保证你的命令或脚本设计能正确通过命令行处理,跳过任意一步,都可能造成意料外的错误

  • 相关阅读:
    PHP生成pdf文档
    PHP将数据库数据批量生成word文档
    三个常用的PHP图表类库
    Javascript——(1)
    python学习HTML之CSS(2)
    python学习HTML之CSS
    python学习之HTML
    python学习之rabbitmq
    第10周15/16/17
    多进程
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/13470669.html
Copyright © 2011-2022 走看看